Spring MVC中<mvc:annotation-driven />和<context:annotation-config />的区别分析

个人最简单的使用理解:

<mvc:annotation-driven />是管理静态资源的,比如静态页面,返回JSON这些。

<context:annotation-config />是管理注解的,比如@Controller这些。

深入的解释:

官方文档:

https://spring.io/blog/2009/12/21/mvc-simplifications-in-spring-3-0/

https://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-config

<mvc:annotation-driven />是在Spring 3.0中添加的标签,它执行以下操作:

  1. 配置Spring 3 Type ConversionService(PropertyEditors的替代方法)
  2. 添加对@NumberFormat格式化数字字段的支持
  3. 添加对@DateTimeFormat格式化日期,日历和Joda时间字段的支持,如果Joda Time在类路径上
  4. 如果JSR-303提供程序在类路径上,则添加对@Valid验证@Controller输入的支持
  5. 添加支持读写XML,如果JAXB在类路径(使用@RequestBody/@ResponseBody的HTTP消息转换)
  6. 添加对阅读和编写JSON的支持,如果Jackson位于类路径(与#5相同的行)

<context:annotation-config />在同一应用程序上下文中查找bean上的注释,并声明对@Autowired,@Resource,@Required,@PostConstruct等所有常规注释的支持。

题外说法(只测试了4.1.6的通过,其余版本没试过):

如果用了<context:component-scan />,其实<context:annotation-config />就可以不用了,默认前者已经提供了包的扫描功能和注解支持。

参考:

https://stackoverflow.com/questions/3977973/whats-the-difference-between-mvcannotation-driven-and-contextannotation

https://spring.io/blog/2009/12/21/mvc-simplifications-in-spring-3-0/

https://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-config

https://scotch.io/@ethanmillar/spring-mvc-component-scan-annotation-config-annotation-driven

https://stackoverflow.com/questions/7414794/difference-between-contextannotation-config-vs-contextcomponent-scan

http://blog.csdn.net/blue_it/article/details/12612533

原文地址:https://www.cnblogs.com/EasonJim/p/7502092.html