getHandler

  1. 这一步是循环遍历handlerMappings,从里面匹配一个返回。
  2. handlerMappings在前面的文章中分析过是在初始化九大组件的时候就初始化好的。

springmvc源码解析(3)--getHandler和getHandlerAdapter

上一步的mapping.getHandler是由AbstractHandlerMapping实现的,主要有以下几个功能

  1. 查找handler处理器的,具体留给子类去重写实现的, 比如根据URL去查找匹配等等
  2. 构建出一个处理器链 ,和handler绑定,并且内部获取所有的拦截器,然后添加到处理器链里面去
  3. 如果设置了跨域,配置跨域信息并放入handler中

springmvc源码解析(3)--getHandler和getHandlerAdapter

拦截器是根据url匹配的,因为拦截器可以针对url配置

springmvc源码解析(3)--getHandler和getHandlerAdapter

getHandlerAdapter

  1. handlerAdapters 在初始化九大组件的时候已经完成,默认配置在DispatcherServlet.properties文件中
  2. 能否适配主要取决于适配器的supports方法如何实现

springmvc源码解析(3)--getHandler和getHandlerAdapter

默认适配器有如下三个

  1. HttpRequestHandlerAdapter
  2. SimplerControllerHandlerAdapter
  3. RequestMappingHandlerAdapter

springmvc源码解析(3)--getHandler和getHandlerAdapter
springmvc源码解析(3)--getHandler和getHandlerAdapter
springmvc源码解析(3)--getHandler和getHandlerAdapter

下面是 AbstractHandlerMethodAdapter的supports方法,里面的supportsInternal方法由子类RequestMappingHandlerAdapter实现,并且固定返回值true, 而请求处理链中存的就是HandlerMethod,所以适配器使用的是RequestMappingHandlerAdapter

springmvc源码解析(3)--getHandler和getHandlerAdapter

相关文章:

  • 2021-09-04
  • 2022-12-23
  • 2021-11-16
  • 2021-04-19
  • 2021-05-29
  • 2021-08-31
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-06-03
  • 2021-05-01
  • 2022-12-23
  • 2021-10-15
  • 2021-09-06
相关资源
相似解决方案