Pregunta

he dado cuenta de varias páginas web que aparentemente Primavera 3.0 es compatible con @Inject de JSR-330. Como nos gusta mucho usar JSR-299 sintaxis para la inyección de dependencias en nuestras bibliotecas, tanto para aplicaciones web y aplicaciones independientes, y tienen alternativas a la autógena, sería bueno si la primavera podría hacer esto.

Al ser un novato a la primavera, he intentado descargar la distribución Spring Framework y poner todos los frascos en la trayectoria de la estructura Eclipse. Sin Inyectar anotación para que mi proyecto de prueba existente mediante soldadura no se compila.

Se puede hacer esto con la primavera? ¿Qué necesito hacer para ponerlo en marcha?

(Soy consciente de que Guice finalmente apoyará esto también. Es sólo en SVN por ahora, y si hay una versión oficial de primavera, que puede, eso sería mejor.)


Se puede hacer. El frasco de JSR-330 debe descargarse por separado, y cglib para analizar los escritos manualmente @Configuration clases, además de un bien común registro de aplicación.

La mayor diferencia con respecto a la autógena parece ser que las necesidades de cableado para ser escritos manualmente en lugar de mágicamente encontrado (un poco más complicado, pero puede hacer que las aplicaciones más robustas), más el tiempo de arranque es mucho menor. Todavía soy nuevo en primavera - ¿hay una manera de tener @Configuration clases autodiscovered

¿Fue útil?

Solución

En la Spring 3.0.x Referencia documentación :

  

de JSR 330 anotación @Inject se puede utilizar en lugar de @Autowired de resorte en los ejemplos siguientes. @Inject no tiene una propiedad necesaria a diferencia de anotación @Autowire de primavera, que tiene una propiedad necesaria para indicar si el valor que se inyecta es opcional. Este comportamiento se activa automáticamente si tiene el JAR JSR 330 en la ruta de clase.

Por lo que puede hacer que su código agnóstico del marco DI utilizando @Inject, pero aún necesita incluir un frasco con las clases javax.inject en su proyecto porque la primavera no les nave misma. Puede encontrar el frasco correspondiente en la sección de descargas en de JSR-330 sitio de Google Code .

Otros consejos

El paquete javax.inject no se incluye como parte de la primavera 3, pero apoya que si está presente.

Si nos fijamos en la fuente para AutowiredAnnotationBeanPostProcessor, verá el constructor utiliza la reflexión para localizar javax.inject.Inject, y registra un mensaje si lo encuentra. No hay dependencia en tiempo de compilación en él.

Usted tendrá que localizar los JSR-330 JAR de alguna otra fuente (por ejemplo, el SDK de Java EE 6).

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