5

? Me pregunto cuál es la diferencia entre @Inject & @Autowired cuándo usar cada uno?, O están haciendo lo mismo?¿Cuál es la diferencia entre @Inject y @Autowired

y si tengo un grano de resorte que tiene un ámbito de aplicación:

@Service 
@Scope("singleton") 

puedo hacer que la inyección de dependencias para ello con tanto sin ningún problema?

gracias de antemano.

Respuesta

7

Por lo que sé, hacen lo mismo. @Inject es una anotación de javax.inject, que es solo la API para la inyección de dependencias. En Spring puede usar ambos, ya que creo que Spring proporciona una implementación para @Inject que hace lo mismo que @Autowired en entornos de Spring.

Matthias Wessendorf blogs sobre esto aquí: http://matthiaswessendorf.wordpress.com/2010/04/20/spring-3-0-and-jsr-330-part-2/

6

¿Qué hay de la lectura the documentation?

JSR de 330 anotación @Inject se puede utilizar en lugar de la primavera de @Autowired en los ejemplos siguientes. @Inject no tiene una propiedad requerida a diferencia de la anotación @Autowired de Spring que tiene una propiedad requerida para indicar si el valor que se inyecta es opcional. Este comportamiento se habilita automáticamente si tiene el JAR JSR 330 en el classpath .

2

creo que vale la pena señalar que, si se utiliza @Autowired, que está creando una dependencia de la primavera, donde el uso de @Inject, usted será capaz de intercambiar otro marco de inyección de dependencias que soporta JSR 330.

+0

más aclaración por favor? –

+0

¿Dónde necesita más aclaración? –

+0

sobre el uso de @Inject en una aplicación de primavera, y si eso es un problema o una mala práctica? –

0

1) @Inject - Definido en el paquete javax.inject y parte de Java.

2) @Autowired - Definido en el paquete org.springframework.bean.factory y parte de Spring framework.

0

Primera, @Autowired se define por Spring Framework, pero @Inject vino de "inyección de dependencias para Java" (JSR-330)"

Segunda, @Inject no toma atributo necesario de modo que si no encuentra ninguna frijol, se producirá un error con un error pero @Autowired puede venir con requerida = false y permitirá un campo anulable.

Tercer, Ventaja de @Inject anotación es que en lugar de inyectar una referencia directa , puede solicitarle a @Inject que inserte un Proveedor. La interfaz del Proveedor permite, entre otras cosas, la inyección diferida de referencias de frijoles y la inyección de múltiples instancias de un frijol.

Cuestiones relacionadas