¿Cuál es la relación entre Spring y Javax.Enterprise.inject?
-
24-10-2019 - |
Pregunta
Estaba leyendo un artículo de Wikipedia sobre los servidores de aplicaciones Java EE aquí:
http://en.wikipedia.org/wiki/java_platform,_enterprise_edition#java_ee_5_certified
Dice que 2 API que implementan los servicios de aplicaciones Java son:
javax.enterprise.inject
javax.enterprise.context
Estos se relacionan con el contexto de aplicación y la inyección de dependencia JSR-299. Nunca antes había oído hablar de estas API. ¿Spring implementa estas API? ¿Le importaría a alguien si lo hiciera?
Solución
- JSR-330 define un conjunto de anotaciones (
javax.inject
) que deben usarse en diferentes marcos de inyección de dependencia. La especificación fue dirigida por Rod Johnson (de Spring), y Bob Lea de (Google Guice) - (en parte) debido a los clientes potenciales de especificaciones, Spring y Guice admiten este conjunto de anotaciones
Esta es la parte de Javaee que usa la primavera.
El mismo conjunto es utilizado por JSR-299, dirigido por Gavin King de JBoss. Sin embargo, JSR-299 (también conocido como CDI) usa javax.enterprise.inejct/context
y es un marco de inyección de dependencia completamente nuevo. Se basa en ideas de primavera, guice y costura, pero se especifica formalmente como un JSR y tiene como objetivo cubrir muchos casos de esquina, así como una integración suave con otras piezas de Javaee.
JSR-299 define una API y SPI para que se puedan desarrollar implementaciones concretas. Las implementaciones actuales son Soldadura jboss, Apache OpenWebbeans y Resina Candi.
Entonces, para responder a su pregunta, no hay relación directa entre javax.enterprise.inject
y primavera.
Otros consejos
Spring admite JSR -330 @Inject: se puede usar en lugar de @aUtowired (excepto que no tiene un required
propiedad).
También debes tener el jarras JSR 330 en el classpath.