DispatcherServlet 委托给特殊的 Bean 来处理请求并呈现适当的响应。我们所说的 「特殊 Bean」是指实现框架契约的 Spring 管理的 Object 实例。这些实例通常有内置的契约,但你可以自定义它们的属性,并扩展或替换它们。
下表列出了由 DispatcherServlet 检测到的特殊 Bean:
Bean type | Explanation |
---|---|
HandlerMapping | 将一个请求和一个用于前后处理的 拦截器 列表一起映射到一个处理程序。映射是基于一些标准,其细节因 HandlerMapping 的实现而异。 两个主要的 HandlerMapping 实现是 RequestMappingHandlerMapping(支持 @RequestMapping 注解的方法)和 SimpleUrlHandlerMapping (维护 URI 路径模式到处理程序的明确注册)。 |
HandlerAdapter | 帮助 DispatcherServlet 调用映射到请求的处理程序,不管处理程序实际上是如何被调用的。例如,调用一个有注解的控制器需要解决注解的问题。HandlerAdapter 的主要目的是将 DispatcherServlet 从这些细节中屏蔽掉。 |
HandlerExceptionResolver | 解决异常的策略,可能将它们映射到处理程序、HTML 错误视图或其他目标。请参阅 异常。 |
ViewResolver | 将处理程序返回的基于字符串的逻辑视图名称解析为实际的视图,并将其渲染到响应。参见 视图解析 和 视图技术。 |
LocaleResolver, LocaleContextResolver | 解决客户使用的 Locale,可能还有他们的时区,以便能够提供国际化的视图。见 Locale。 |
ThemeResolver | 解决你的网络应用可以使用的主题—例如,提供个性化的布局。见 主题。 |
MultipartResolver | 在一些多部件解析库的帮助下,解析一个多部件请求(例如,浏览器表单文件上传)的抽象。参见 多部件解析器。 |
FlashMapManager | 存储和检索 「输入」和 「输出 」FlashMap,可用于将属性从一个请求传递到另一个请求,通常跨越重定向。见 Flash 属性。 |