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

时间:2015-03-04 09:52:51

标签: spring-mvc

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

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

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

@RequestMapping(method = RequestMethod.GET,value =&#34; / health&#34;) @RequestMapping(method = RequestMethod.GET,value =&#34; / test&#34;)

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

任何人都可以向我解释一下这个标签的用途是什么吗?

提前致谢!

1 个答案:

答案 0 :(得分:10)

默认情况下,Spring提供对@Controller@RequestMapping的支持。但是,通过启用mvc:annotation-driven,您可以获得处理映射到带注释的控制器方法的请求的支持,例如声明性验证,格式化和转换服务。引自新配置功能的spring's blog的摘录

  

它根据你的内容应用合理的默认值   类路径。这些默认值包括:

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

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

  •   
  • 如果Joda Time在类路径上,则支持使用@DateTimeFormat格式化日期,日历和Joda时间字段
  •   
  • 如果JSR-303提供程序在类路径上,则支持使用@Valid验证@Controller输入
  •   
  • 如果JAXB在类路径上,则支持读写XML
  •   
  • 如果杰克逊在班级路径上,支持读写JSON
  •   

另一个相关的有用博客post

  

如果此标记未添加到XML,则必须手动进行   为HandlerAdapter,HandlerMapping等组件定义bean   绑定初始化程序,请求消息转换器等。此标记有帮助   注册以下组件。

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

最后在官方docs

中有一个更正式的定义