Je migre du printemps 2.5 au printemps 3.
Ils ont introduit <mvc:annotation-driven />
qui fait de la magie noire. Cela devrait être déclaré dans le fichier de configuration du servlet uniquement.
Au printemps 2.5, je viens d'utiliser les balises <context:annotation-config />
et <context:component-scan base='...'/>
déclarées à la fois dans application-context.xml
et le code de configuration XML du servlet répartiteur avec les packages de base appropriés à analyser.
Je me demande donc quelle est la différence entre les balises mvc:annotation-driven
et context:annotation-config
dans la configuration de servlet et que puis-je éliminer dans les fichiers de configuration Spring 3?
<context:annotation-config>
déclare la prise en charge des annotations générales telles que @Required
, @Autowired
, @PostConstruct
, etc.
<mvc:annotation-driven />
déclare la prise en charge explicite des contrôleurs MVC basés sur les annotations (c'est-à-dire @RequestMapping
, @Controller
, bien que la prise en charge de ceux-ci soit le comportement par défaut), ainsi que la prise en charge de la validation déclarative via @Valid
et le corps du message avec @RequestBody
/ResponseBody
.
Il y a aussi quelques détails supplémentaires sur l'utilisation de <mvc:annotation-driven />
dans Spring docs . En un mot, <mvc:annotation-driven />
vous donne un meilleur contrôle sur le fonctionnement interne de Spring MVC. Vous n'avez pas besoin de l'utiliser, sauf si vous avez besoin d'une ou plusieurs des fonctionnalités décrites dans la section susmentionnée de la documentation.
En outre, d'autres balises "pilotées par l'annotation" sont disponibles pour fournir des fonctionnalités supplémentaires dans d'autres modules Spring. Par exemple, <transaction:annotation-driven />
permet d'utiliser l'annotation @Transaction, <task:annotation-driven />
est requis pour @Scheduled et al ...
mvc: annotation-driven est une balise ajoutée dans Spring 3.0 qui effectue les opérations suivantes:
contexte: annotation-config Recherche les annotations sur les beans dans le même contexte d'application que celui défini et déclare la prise en charge de toutes les annotations générales telles que @Autowired, @Resource, @Required, @PostConstruct, etc.