Qual è la differenza tra e in servlet?
-
09-10-2019 - |
Domanda
sto migrando dalla primavera 2,5 a molla 3.
Si hanno introdotto <mvc:annotation-driven />
che fa un po 'di magia nera. Questo dovrebbe essere dichiarato in un solo file di configurazione servlet.
tag <context:annotation-config />
e <context:component-scan base='...'/>
Nella primavera del 2,5 ho appena usato dichiarati sia in application-context.xml
e dispatcher XML di configurazione servlet con i pacchetti di base necessarie per eseguire la scansione.
Quindi, mi chiedo qual è la differenza tra mvc:annotation-driven
e context:annotation-config
tag servlet config e cosa posso eliminare in primavera 3 file di configurazione?
Soluzione
<context:annotation-config>
dichiara il supporto per le annotazioni generali come @Required
, @Autowired
, @PostConstruct
, e così via.
<mvc:annotation-driven />
dichiara supporto esplicito per i controller MVC annotazione-driven (cioè @RequestMapping
, @Controller
, anche se il supporto per chi è il comportamento predefinito), così come l'aggiunta del supporto per la convalida dichiarativo tramite @Valid
e il messaggio di smistamento corpo con @RequestBody
/ ResponseBody
.
Altri suggerimenti
C'è anche un po 'di dettagli sull'uso del <mvc:annotation-driven />
nel docs primavera . In poche parole, <mvc:annotation-driven />
offre un maggiore controllo sui meccanismi interni di Spring MVC. Non è necessario utilizzare a meno che non avete bisogno di uno o più dei funzionalità illustrate nella sezione citata dei documenti.
Inoltre, ci sono altri "annotazione-driven" tag disponibili per fornire funzionalità aggiuntive in altri moduli di primavera. Ad esempio, <transaction:annotation-driven />
consente di utilizzare l'annotazione @Transaction, è necessario <task:annotation-driven />
per @Scheduled et al ...
MVC: annotation-driven è un tag aggiunto nella primavera del 3.0 che fa il seguente:
- configura il tipo Spring 3 ConversionService (in alternativa a PropertyEditors)
- Aggiunge il supporto per la formattazione campi numerici con @NumberFormat
- Aggiunge il supporto per la formattazione di data, il calendario, e campi Joda tempo con @DateTimeFormat, se Joda tempo è nel classpath
- supporto aggiunge per la convalida ingressi @Controller con @Valid, se un JSR-303 Provider è sul classpath
- Aggiunge il supporto per il supporto per la lettura e la scrittura di XML, se JAXB è sul classpath (conversione di messaggi HTTP con @ RequestBody / @ responseBody)
- Aggiunge il supporto per la lettura e la scrittura di JSON, se Jackson è o n classpath (lungo le stesse linee come 5 #)
context: annotation-config Looks per le annotazioni sui fagioli nello stesso contesto applicativo Essa è definita e dichiara il supporto per tutte le annotazioni generali come @Autowired, @Resource, @Required, @PostConstruct ecc ecc