HandlerMapping
将请求映射到处理程序以及用于预处理和后处理的拦截器列表,其细节因HandlerMapping不同实现而异。
两个主要的HandlerMapping实现是RequestMappingHandlerMapping(它支持@RequestMapping注释方法)和SimpleUrlHandlerMapping(它维护URI路径模式到处理程序的显式注册)。
HandlerAdapter
帮助DispatcherServlet调用映射到请求的处理程序,而不管该处理程序实际是如何调用的。例如,调用带注释的控制器需要解析注释。
HandlerAdapter的主要目的是保护DispatcherServlet不受这些细节的影响。
HandlerExceptionResolver
处理异常的策略,可能将异常处理映射到程序、HTML错误视图或其它目标。
ViewResolver
将从处理程序返回的基于逻辑字符串的视图名称解析为要呈现响应的实际视图。
LocalResolver
解析客户端使用的语言环境和时区,以便能够提供国际化视图。
ThemeResolver
解决Web应用程序可能使用的主题,例如,提供个性化的布局。
MultipartResolver
解析多媒体请求。
FlashMapManager
存储和检索“输入”和“输出”FlashMap,可用于从一个请求传递属性到另一请求,通常用于重定向。但存在的缺点是只能解决第一个重定向,而不能解决再次重定向。例如从重定向到B网站,如果再从B网址重定向到C网址,那么数据将会丢失。
它们在何时被实例化?
在DispatcherServlet的initStrategies方法中被实例化以及初始化。如何走到这一步请查看我的另一篇博文 DispatcherServlet和Spring应用上下文初始化详解
// DispatcherServlet#initStrategies
protected void initStrategies(ApplicationContext context) {
initMultipartResolver(context);
initLocaleResolver(context);
initThemeResolver(context);
initHandlerMappings(context);
initHandlerAdapters(context);
initHandlerExceptionResolvers(context);
initRequestToViewNameTranslator(context);
initViewResolvers(context);
initFlashMapManager(context);
}