Primavera Ningún frijol único de tipo

Tengo un pequeño problema en Spring con dos componentes de un servicio.

Tengo este componente:

@Component
public class SmartCardWrapper 

y éste:

@Component
public class DummySmartCardWrapper extends SmartCardWrapper

El servicio autowire pero Spring falla debido a esta expectativa:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [com.cinebot.smartcard.SmartCardWrapper] is defined: expected single matching bean but found 2: [dummySmartCardWrapper, smartCardWrapper]

¿Por qué no usa nombres de clase?

preguntado el 04 de julio de 12 a las 09:07

Hola Tobia, parece que deberías usar la anotación @Qualifier, mira el enlace: static.springsource.org/spring/docs/2.5.x/reference/… -

1 Respuestas

Ese es uno de los conceptos más básicos de Spring - Inversion of Control.

No necesita declarar sus dependencias usando sus tipos de implementación (para evitar el acoplamiento con la implementación). Puede declararlos usando interfaces o superclases en su lugar, y hacer que Spring encuentre la clase de implementación adecuada en el contexto.

En otras palabras, los beans no se distinguen por sus clases de implementación, porque es posible que desee cambiar la clase de implementación de un bean sin cambiar los beans que dependen de él. Si desea distinguir entre diferentes beans del mismo tipo, use nombres de beans lógicos en su lugar:

@Autowired @Qualifier("smartCardWrapper")
private SmartCardWrapper smardCardWrapper;

@Autowired @Qualifier("dummySmartCardWrapper")
private SmartCardWrapper dummySmardCardWrapper;

Respondido 04 Jul 12, 09:07

Estoy intentando con @Service clase pública TestProvider implementa Runnable pero cuando trato de autoconectar parece que Spring está buscando un servicio Runnable... ¿por qué? ¿Cómo dejar que busque TestProvider? - Tobia

@Tobia: ¿No es así? este problema? - axtavt

Los problemas parecen ser los mismos... pero no puedo entender la solución. Quiero definir el bean donde puse la anotación @service, no su superclase o interfaz... ¿puedo? - Tobia

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.