个人最简单的使用理解:
<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中添加的标签,它执行以下操作:
- 配置Spring 3 Type ConversionService(PropertyEditors的替代方法)
- 添加对@NumberFormat格式化数字字段的支持
- 添加对@DateTimeFormat格式化日期,日历和Joda时间字段的支持,如果Joda Time在类路径上
- 如果JSR-303提供程序在类路径上,则添加对@Valid验证@Controller输入的支持
- 添加支持读写XML,如果JAXB在类路径(使用@RequestBody/@ResponseBody的HTTP消息转换)
- 添加对阅读和编写JSON的支持,如果Jackson位于类路径(与#5相同的行)
<context:annotation-config />在同一应用程序上下文中查找bean上的注释,并声明对@Autowired,@Resource,@Required,@PostConstruct等所有常规注释的支持。
题外说法(只测试了4.1.6的通过,其余版本没试过):
如果用了<context:component-scan />,其实<context:annotation-config />就可以不用了,默认前者已经提供了包的扫描功能和注解支持。
参考:
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