Esistono due annotazioni separate per eseguire l'inserimento delle dipendenze in base al nome in primavera, javax.annotation.Resource
e javax.inject.Named
. Il documentation at Spring indica @Resource
dovrebbero essere utilizzati per l'iniezione per nome:Iniezione dipendenza primavera, per usare @Named o @Resource?
Se avete intenzione di esprimere iniezione annotazioni-driven per nome, non utilizzano principalmente @Autowired, anche se è tecnicamente in grado di riferirsi a un nome di fagioli attraverso i valori di @Qualifier. Utilizzare invece l'annotazione JSR-250 @Resource, definita semanticamente per identificare un componente di destinazione specifico con il suo nome univoco, con il tipo dichiarato non rilevante per il processo di corrispondenza.
Quanto sopra è un po 'di confusione, come sorgente sta solo sostenendo @Resource
anziché @Autowired
combinato con @Qualifer
. Non si fa menzione di @Named
fino al later in the documentation.
JSR-250 definisce @Resource
, mentre JSR-330 definisce @Inject
e @Named
. So che possono essere mescolati e abbinati entro la primavera abbastanza facilmente. Quale JSR usare?
Sembra che la portabilità con Guice e CDI sia piacevole e che quindi utilizzi le annotazioni JSR-330. D'altra parte, la documentazione indica anche un paio di limitations entro la primavera quando si utilizzano le annotazioni JSR-330.
Qual è la procedura consigliata (se disponibile) per l'annotazione per nome?
Grazie.
Le limitazioni citate si riferiscono solo a come Spring utilizzerà queste annotazioni e come le annotazioni introdotte da Spring sono molto più robuste per lavorare specificamente con Spring. –
Le limitazioni non sembrano così onerose. Anche se esistono. Sembra che molto di ciò sarebbe più semplice se Spring avesse adottato anche le annotazioni CDI aggiuntive. – Saish