springMVC 中的HandlerAdapter和HandlerMapping

springMVC在初始化自己的上下文之后就会进行initStrategies方法进行初始化组件

HttpServletBean是实现了获取web.xml中的配置元素的值;FrameworkServlet实现了SpringMVC上下文并根据不同的DispatcherServlet放在以servlet-name为key值severtContext中;DispatcherServlet主要实现了初始化SpringMVC组件元素。

先来看一下init方法有哪些内容:

protected void initStrategies(ApplicationContext context) {
        this.initMultipartResolver(context);
        this.initLocaleResolver(context);
        this.initThemeResolver(context);
        this.initHandlerMappings(context);
        this.initHandlerAdapters(context);
        this.initHandlerExceptionResolvers(context);
        this.initRequestToViewNameTranslator(context);
        this.initViewResolvers(context);
        this.initFlashMapManager(context);
    }
  • this.initMultipartResolver(context); 初始化文件上传的组件
  • this.initLocaleResolver(context); 初始化用户区域解析器 具体可以参考

https://blog.csdn.net/rj042/article/details/23354225

  • this.initThemeResolver(context); 主题解析器
  • this.initHandlerMappings(context); handler映射,这篇后面会重点说这个
  • this.initHandlerAdapters(context); 初始化HandlerAdapter 我们每次调用的请求最终都会由这个来处理

后面很多初始化组件就不一一细说了,这篇主要讲HandlerMapping和HandlerAdapter

HandlerMapping

编写springMVC controller时候,springmvc提供了很方便的注解@Controller,一个HandlerMapping就对应这一个HandlerMapping,所以HandlerMapping记录着我们注解@Controller的那个类。

HanderAdapter

Controller里面有很多具体的请求所对应的方法,即一个HTTP请求最终会由相对应的HandlerAdapter来处理,

在,即一个controller里面有几个HTTP请求服务,那么一个HandlerMapping中就有几个HandlerAdapter。

你可能感兴趣的:(spring)