個人最簡單的使用理解:
<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