如前所述,DispatcherServlet 需要咨询一个或多个处理器映射来明确地将请求分发给哪个控制器。spring自带了多个处理器映射实现供我们选择:
- BeanNameUrlHandlerMapping
- ControllerBeanNameHandlerMapping
- ControllerClassNameHandlerMapping
- DefaultAnnotationHandlerMapping
- SimpleUrlHanderMapping
使用如上这些处理器映射通常只需在Spring中配置一个Bean,如果没有找到处理器映射Bean,DispatcherServlet将创建并使用如上1和4。
DefaultAnnotationHandlerMapping用于使用基于注解的控制器类,其将请求映射到使用@RequestMapping注解的方法。但实现注驱动的Spring MVC并不仅仅是将请求映射到方法上。在构建控制器的时候,我们还需要使用注解将请求参数绑定到控制器的方法参数上进行校验以及信息转换。所以,只使用DefaultAnnotationHandlerMapping还不行。
幸好,只需在配置文件中添加一行配置就能得到Spring MVC所提供的注解驱动特性:<mvc:annotation-driven/>
此标签注册了多个特性,包括JSR-303校验支持、信息转换以及对域格式化的支持。