Pregunta

Tengo esta configuración de primavera:

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

El TheClass implementos TheInterface clase. Entonces tengo este (hipotética) de código Java:

@Autowired
TheInterface x;

@Autowired
TheClass y;

El autowiring de obras TheInterface pero el autowiring de TheClass falla. Primavera me da una NoSuchBeanDefinitionException para la clase.

¿Por qué se puede conectar la interfaz y no a la clase?

¿Fue útil?

Solución

Normalmente, ambos funcionan, puede Autowire interfaces o clases.

Hay alguna parte, probablemente, un generador de autoproxy en su contexto, que está terminando su grano de boo en un objeto proxy generado. Este objeto proxy implementará TheInterface, pero no será un TheClass. Al utilizar autoproxies, es necesario programa en la interfaz, no la implementación.

El candidato probable es proxies transaccionales - está usando transacciones Spring, utilizando AspectJ o @Transactional?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top