我正在从Spring 2.5迁移到Spring 3.
他们引入了<mvc:annotation-driven />
做了一些黑魔法。这应该只在servlet配置文件中声明。
在Spring 2.5中,我刚刚在<context:annotation-config />
和dispatcher servlet配置XML中使用<context:component-scan base='...'/>
和application-context.xml
标记,并使用适当的基础包进行扫描。
所以我想知道servlet配置中mvc:annotation-driven
和context:annotation-config
标签之间的区别是什么?我可以在Spring 3配置文件中消除什么?
答案 0 :(得分:145)
<context:annotation-config>
声明支持常规注释,例如@Required
,@Autowired
,@PostConstruct
等。
<mvc:annotation-driven />
声明明确支持注释驱动的MVC控制器(即@RequestMapping
,@Controller
,虽然支持这些是默认行为),并且通过添加对声明性验证的支持@Valid
和邮件正文编组@RequestBody
/ ResponseBody
。
答案 1 :(得分:36)
在Spring docs中使用<mvc:annotation-driven />
还有一些更详细的信息。简而言之,<mvc:annotation-driven />
使您可以更好地控制Spring MVC的内部工作方式。除非您需要上述文档部分中列出的一项或多项功能,否则无需使用它。
此外,还有其他“注释驱动”标签可用于在其他Spring模块中提供其他功能。例如,<transaction:annotation-driven />
允许使用@Transaction注释,@ {Sduduled等人需要<task:annotation-driven />
...
答案 2 :(得分:7)
mvc:annotation-driven 是Spring 3.0中添加的标记,它执行以下操作:
<强>上下文:注解的配置强> 在定义的相同应用程序上下文中查找bean上的注释,并声明支持所有常规注释,如@ Autowired,@ Resource,@ Required,@ PostConstruct等。