Inyección de dependencia con @Inject en Weld (JSR-299 RI). ¿Cómo está la @Produces correspondiente se ha encontrado?

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

Pregunta

He jugado con el JSR-299 implementación de referencia "Weld" con el propósito de utilizarlo en una aplicación independiente, y he tenido un vistazo a la documentación, y se maravilló de la magia.

Mi pregunta es ¿Cómo el productor de un objeto dado para ser @ Inject'ed se encuentra?

O bien el compilador de Java genera consejos para las anotaciones que se encuentran fácilmente por el cargador de clases, o la ruta de clase completa debe ser atravesada cargar todas las clases para ver lo que hacen que suena muy ineficiente para mí, o es un enfoque completamente diferente.

¿Cuál es el truco?

¿Fue útil?

Solución

La ruta de clases se analizan en busca de "archivos de frijol". archivos de frijol son aquellas bibliotecas que contienen META-INF/beans.xml. Todos los frijoles en estos archivos se registran automáticamente con el BeanManager y sus anotaciones se analizan y almacenan. Siempre que se necesite un productor del gestor de beans es consultado sobre los productores elegibles

Otros consejos

supongo que funciona igual que en la costura: en el que la ruta de clases es, en efecto escaneada. El impl también buscará el @produce con el alcance coincidente más pequeño, lo que puede tener por ejemplo un producto de nivel de sesión para los usuarios registrados y otro nivel de aplicación para los usuarios anónimos.

No sé, pero esto @Inject parcial hecho por el padre de Hibernate finalmente fue reelaborado / influenciada al final de SpringSource y Google. Tal vez funciona un poco como Guice?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top