特殊 Bean 类型

DispatcherServlet 将请求委托给特殊的 Bean 以处理请求并呈现相应的响应。“特殊 Bean”指的是 Spring 管理的 Object 实例,这些实例实现了框架契约。这些通常带有内置契约,但您可以自定义它们的属性并扩展或替换它们。

下表列出了 DispatcherServlet 检测到的特殊 Bean

Bean 类型 说明

HandlerMapping

将请求映射到处理程序,以及用于预处理和后处理的 拦截器 列表。映射基于某些条件,具体细节因 HandlerMapping 实现而异。

两个主要的 HandlerMapping 实现是 RequestMappingHandlerMapping(支持 @RequestMapping 注解的方法)和 SimpleUrlHandlerMapping(维护 URI 路径模式到处理程序的显式注册)。

HandlerAdapter

帮助 DispatcherServlet 调用映射到请求的处理程序,而不管处理程序实际上是如何调用的。例如,调用带注解的控制器需要解析注解。HandlerAdapter 的主要目的是保护 DispatcherServlet 免受此类细节的影响。

HandlerExceptionResolver

解决异常的策略,可能将其映射到处理程序、HTML 错误视图或其他目标。参见 异常

ViewResolver

将处理程序返回的基于逻辑 String 的视图名称解析为实际的 View,并使用它呈现到响应中。参见 视图解析视图技术

LocaleResolverLocaleContextResolver

解析客户端使用的 Locale 以及可能使用的时区,以便能够提供国际化的视图。参见 Locale

ThemeResolver

解析 Web 应用程序可以使用的主题,例如,提供个性化的布局。参见 主题

MultipartResolver

用于解析多部分请求(例如,浏览器表单文件上传)的抽象,借助于某些多部分解析库。参见 多部分解析器

FlashMapManager

存储和检索可以用于将属性从一个请求传递到另一个请求(通常跨重定向)的“输入”和“输出”FlashMap。参见 Flash 属性