08.处理器映射器(HandlerMapping)

1.Spring 的路径映射器以 HandlerMapping 为核心,返回包含处理器和拦截器的 HandlerExecutionChain。
2.举例最常用的一个(RequestMappingHandlerMapping)。

  • 工作原理

    • 容器启动时扫描带有 @Controller/@RestController 的 Bean
    • 解析类级别和方法级别的 @RequestMapping 注解,提取路径、请求方法、参数、请求头匹配条件
    • 建立 “请求条件→处理器方法(HandlerMethod)” 的映射关系
  • 映射注册表的结构

    • key: RequestMappingInfo(请求路径、方法、参数等匹配条件)
    • value: HandlerMethod
  • 解析请求条件:getHandlerInternal () 方法会从请求中提取请求路径、请求方法、请求头、参数等,封装成 ServletRequestAttributes,并调用 lookupHandlerMethod () 方法查找匹配的 HandlerMethod,该方法会遍历映射表中的 RequestMappingInfo 找到最匹配的 HandlerMethod.

3.核心:HandlerMethod 的组成

  • ① bean 实例的引用或名称,主用于反射调用方法.

  • ② 由反射得到的 Method 对象,前面的 class 对象有涉及.

  • ③ 方法的元数据缓存,将方法的参数列表(参数类型、注解、位置、返回类型等信息)封装为 MethodParameter 对象.

  • ④辅助信息:

    • beanType: 处理器 bean 的实际类型
    • description: 方法的描述字符串(如 “UserController.getUserID (Long)”)用于日志打印和异常信息展示
    • applicationContext: 所属的 Spring 容器,原型 bean 场景下用于获取 bean 实例.
posted @ 2025-12-02 22:01  那就改变世界吧  阅读(5)  评论(0)    收藏  举报