Domanda

Ho giocato con la JSR-299 Reference Implementation "Saldare" con lo scopo di utilizzarlo in un applicazione stand-alone, e ho avuto uno sguardo alla documentazione e meravigliato la magia.

La mia domanda è come il produttore di un determinato oggetto da @ Inject'ed è trovato?

Sia il compilatore Java produce spunti per le annotazioni che si trova facilmente dal programma di caricamento classe, o il percorso di classe completa deve essere attraversato il caricamento di tutte le classi per vedere quello che fanno che suona altamente inefficiente a me, o si tratta di un approccio completamente diverso.

Qual è il trucco?

È stato utile?

Soluzione

Il percorso di classe viene analizzato per "archivi di fagioli". archivi di fagioli sono quelle librerie che contengono META-INF/beans.xml. Tutti i fagioli in questi archivi vengono automaticamente registrati con il BeanManager e le loro annotazioni vengono analizzati e memorizzati. Ogni volta che è necessario un produttore il manager di fagioli è consultato sui produttori ammissibili

Altri suggerimenti

Si considera che funziona lo stesso come in Seam: in cui il percorso di classe è infatti sottoposto a scansione. L'impl cercherà anche per il @produce con il più piccolo ambito di corrispondenza, in modo da poter avere per esempio una produzione a livello di sessione per gli utenti registrati e un altro livello su richiesta per gli utenti anonimi.

Non so, ma questo @Inject parzialmente fatto dal padre di Hibernate è stato finalmente rielaborato / influenzato alla fine da SpringSource e Google. Forse funziona un po 'come Guice?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top