I am migrating from Spring 2.5 to Spring 3.
They have introduced <mvc:annotation-driven />
which does some black magic. This is expected to be declared in servlet configuration file only.
In Spring 2.5 I have just used <context:annotation-config />
and <context:component-scan base='...'/>
tags declared both in application-context.xml
and dispatcher servlet configuration XML with appropriate base packages to scan.
So I wonder what is the difference between mvc:annotation-driven
and context:annotation-config
tags in servlet config and what can I eliminate in Spring 3 config files?
Best Answer
<context:annotation-config>
declares support for general annotations such as@Required
,@Autowired
,@PostConstruct
, and so on.<mvc:annotation-driven />
declares explicit support for annotation-driven MVC controllers (i.e.@RequestMapping
,@Controller
, although support for those is the default behaviour), as well as adding support for declarative validation via@Valid
and message body marshalling with@RequestBody
/ResponseBody
.