2012-01-05 8 views
6

I copiado un pom.xml mientras yo estaba pasando por un tutorial en línea MVC primavera, y que tenía:Tengo javax.inject en mi pom.xml, ¿lo utilizará de forma automática?

 <!-- @Inject --> 
     <dependency> 
      <groupId>javax.inject</groupId> 
      <artifactId>javax.inject</artifactId> 
      <version>1</version> 
     </dependency> 

Por lo que entiendo la primavera tiene su propia inyección de dependencias incorporado, se esta anular el valor predeterminado y usar javax.inject?

También he visto slf4j in pom's, sin configuración adicional en código o xml.

¿Cómo funciona esto bajo las sábanas, la primavera examina la carpeta lib y si se encuentra lib que es sobresatible, lo hace?

+0

Es solo una anotación, que Spring puede reconocer y aprovechar, como @PostConstruct. No estoy seguro de cuál es su pregunta sobre slf4j, es una fachada alrededor de otras bibliotecas de registro. –

+0

I 'guess (no estoy seguro)' javax.inject y Spring dependency injection son dos cosas diferentes (de diferentes proveedores) que realizan la misma acción (inyección de dependencia). –

Respuesta

10

La dependencia en su POM para javax.inject

<dependency> 
     <groupId>javax.inject</groupId> 
     <artifactId>javax.inject</artifactId> 
     <version>1</version> 
    </dependency> 

tiene nada que ver con la primavera. Simplemente genera una dependencia javax.inject en el proyecto. Un frasco con el nombre javax.inject-1.jar. Este jar es necesario si usa la anotación @Inject que también es compatible con Spring.

Puede usar @ Autowired/@ Resource/@ Inject según sus necesidades. Ver here para su diferencia y también una discusión en What is the difference between @Inject and @Autowired in Spring Framework? Which one to use under what condition?.

En cuanto a slf4j, es solo una abstracción de frameworks como log4j que permite el tiempo de ejecución del plugin de logging framework. Spring-OSGI, Hibernate todos usan esto internamente. Entonces, esta es la razón por la cual encuentras la dependencia en tu pom. Espero que esto aclare las cosas.

3

inject habilita JSR 330 soporte para la primavera. El uso de las anotaciones de inyección hace que la aplicación no esté ligada a la primavera: podría cambiarse a Java EE 6 o guice u otros proveedores que admitan la especificación.

Puede usar Inyección o inyección de resorte (o quizás ambas).

1

como @Aravind le dijeron a javax.inject que la dependencia no tiene nada que ver con la primavera. y se utiliza para obtener la anotación @Inject, es parte del estándar Java CDI, introducido en Java EE 6 (JSR-299)

Primavera utilizando @Inject como sinónimo de su propia anotación @Autowired.
@Autowired y @Inject, dos anotaciones funcionan del mismo modo que Spring ha decidido admitir algunas anotaciones JSR-299 además de las suyas propias.

comming a registro de la fachada simple para Java (SLF4J):

La fachada de registro simple para Java o (SLF4J) sirve como un simple fachada o abstracción de diversos marcos de registro, por ejemplo, java.util.logging, log4j y logback, lo que permite al usuario final conectar el marco de trabajo de registro deseado en el momento del despliegue.

Cuestiones relacionadas