Injection de dépendance avec @Inject en soudure (JSR-299 RI). Comment les @Produces correspondants trouvés?

StackOverflow https://stackoverflow.com/questions/2574304

Question

Je l'ai joué avec la JSR-299 Mise en oeuvre de référence « Weld » dans le but de l'utiliser dans une application autonome, et je l'ai jeté un oeil à la documentation, et émerveillés par la magie.

Ma question est comment le producteur à être @ Inject'ed se trouve? Un objet donné

Soit le compilateur java produit des notes pour les annotations qui est facile à trouver par le classloader ou le classpath complet doit être parcouru charger toutes les classes pour voir ce qu'ils font qui me semble très inefficace, ou il est une approche complètement différente.

Quel est le truc?

Était-ce utile?

La solution

Le chemin de classe est analysé pour « archives de haricots ». archives Bean sont les bibliothèques qui contiennent META-INF/beans.xml. Tous les haricots dans ces archives sont automatiquement enregistrées à l'BeanManager et leurs annotations sont analysées et stockées. Chaque fois qu'un producteur est nécessaire, le gestionnaire de haricots est consulté sur les producteurs admissibles

Autres conseils

Je suppose que cela fonctionne le même que dans Seam: où le classpath est en effet analysé. Le impl cherchera également pour le @produce avec le champ correspondant plus petit, donc vous pouvez par exemple un produit au niveau de la session pour les utilisateurs connectés et un autre au niveau de l'application pour les utilisateurs anonymes.

J'sais, mais ce @Inject fait en partie par le père de Hibernate a finalement été retravaillé / influencé à la fin par SpringSource et Google. Peut-être que cela fonctionne un peu comme Guice?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top