Spring Framework:<mvc:annotation-driven />的目的是什么

use*_*702 2 spring-mvc

我对Spring比较新,我对标签有点困惑.

在浏览文档并查看不同的帖子后,似乎主要用途是Spring MVC需要将请求分派给@Controllers.

我创建了一个带有两个requestMappings的控制器:

@RequestMapping(method = RequestMethod.GET,value ="/ health")@ RequestMapping(method = RequestMethod.GET,value ="/ test")

我在servlet.xml中测试和测试了web应用程序,似乎没有任何区别是被忽略或没有.请求似乎仍然可以达到我的控制器.

任何人都可以向我解释这个标签究竟用于什么?

提前致谢!

Mas*_*ave 10

为支持@Controller@RequestMapping被Spring默认提供.但是,通过使mvc:annotation-driven您能够获得处理映射到带注释的控制器方法的请求的支持,例如声明性验证,格式化和转换服务.Spring的博客摘录介绍了新的配置功能

它根据类路径中的内容应用合理的默认值.此类默认值包括:

  • 使用Spring 3 Type ConversionService作为JavaBeans PropertyEditors的更简单且更强大的替代方法

  • 支持使用@NumberFormat格式化数字字段

  • 如果Joda Time在类路径上,则支持使用@DateTimeFormat格式化Date,Calendar和Joda Time字段
  • 如果JSR-303提供程序在类路径上,则支持使用@Valid验证@Controller输入
  • 如果JAXB在类路径上,则支持读写XML
  • 如果Jackson在类路径上,则支持读写JSON

另一个相关的有用博客文章

如果此标记未添加到XML,则必须手动为HandlerAdapter,HandlerMapping,Binding Initializer,Request Message转换器等组件定义bean.此标记有助于注册以下组件.

  • DefaultAnnotationHandlerMapping - 这是一个HandlerMapping 将HTTP请求映射到使用@RequestMapping注释定义的处理程序方法的实现.
  • AnnotationMethodHandlerAdapter - 负责扫描控制器以识别使用@MVC注释注释的方法(和参数).它扫描并缓存带注释的处理程序方法 @RequestMapping.另外处理@RequestParam,@ModelAttribute, @SessionAttributes@InitBinder注释.
  • ConfigurableWebBindingInitializer - Web数据绑定器的初始化程序.通过验证器,转换服务,属性编辑器等帮助声明性地配置Web Binder.
  • LocalValidatorFactoryBean - 实现验证器接口并启用JSR303验证.这是注入的 ConfigurableWebBindingInitializer.
  • FormattingConversionServiceFactoryBean - 一个转换工厂,它返回日期和数字等基本对象的转换服务.这家工厂再次注入ConfigurableWebBindingInitializer.
  • 支持消息转换器

最后在官方文档中有一个更正式的定义