Spring没有独特的类型
在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
@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,而不是他的超类或接口。。。我可以吗?