resource example bean java spring dependency-injection autowired

java - example - Spring Autowiring clase vs. interfaz?



spring inject bean example (1)

Tengo esta configuración de primavera:

<bean id="boo" class="com.x.TheClass"/>

La clase TheClass implementa TheInterface . Entonces tengo este (hipotético) código de Java:

@Autowired TheInterface x; @Autowired TheClass y;

El autovínculo de TheInterface funciona, pero el autovínculo de TheClass falla. Spring me da una NoSuchBeanDefinitionException para la clase.

¿Por qué puedes conectar la interfaz y no la clase?


Normalmente, ambos funcionarán, puede autoconectar interfaces o clases.

Probablemente haya un generador de autoproxy en algún lugar de su contexto, que está envolviendo su bean boo en un objeto proxy generado. Este objeto proxy implementará TheInterface , pero no será TheClass . Al usar autoproxies, necesita programar en la interfaz, no en la implementación.

El candidato probable son los proxies transaccionales: ¿está utilizando transacciones de Spring, utilizando AspectJ o @Transactional ?