Spring没有独特的类型

Spring没有独特的类型,spring,javabeans,code-injection,Spring,Javabeans,Code Injection,在Spring中,我遇到了一个小问题,即服务的两个组件 我有这个部分: @Component public class SmartCardWrapper 还有这个: @Component public class DummySmartCardWrapper extends SmartCardWrapper 服务autowire(自动连线)和spring(弹簧)均失败,原因如下: org.springframework.beans.factory.NoSuchBeanDefinitionEx

在Spring中,我遇到了一个小问题,即服务的两个组件

我有这个部分:

@Component
public class SmartCardWrapper 
还有这个:

@Component
public class DummySmartCardWrapper extends SmartCardWrapper
服务autowire(自动连线)和spring(弹簧)均失败,原因如下:

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]

为什么不使用类名?

这是Spring最基本的概念之一——控制反转

您不需要使用依赖项的实现类型来声明依赖项(以避免与实现耦合)。您可以使用接口或超类来声明它们,并让Spring在上下文中找到合适的实现类

换句话说,bean并不是通过它们的实现类来区分的,因为您可能希望更改bean的实现类,而不更改依赖它的bean。如果要区分相同类型的不同bean,请改用逻辑bean名称:

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

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

你好,Tobia,似乎你应该使用注释@Qualifier,查看链接:我正在尝试使用@Service公共类TestProvider implements Runnable,但当我尝试自动连线时,似乎Spring正在寻找一个Runnable服务。。。为什么?如何让它寻找TestProvider?@Tobia:不是吗?问题似乎是一样的。。。但我不明白解决办法。我想定义放置@service注释的bean,而不是他的超类或接口。。。我可以吗?