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。