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 ?