弹簧式的没有唯一豆(Spring No unique bean of type)

2019-07-30 05:33发布

我在春天有点麻烦与服务的两个组成部分。

我有这个组件:

@Component
public class SmartCardWrapper 

还有这个:

@Component
public class DummySmartCardWrapper extends SmartCardWrapper

该服务自动装配既但由于这个春天厚望失败:

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]

为什么它不使用类的名字呢?

Answer 1:

这就是春天的最基本的概念之一 - 控制反转的。

你不需要使用其实施类型来声明你的依赖(以避免与实现耦合)。 您可以使用接口和父,而不是宣布他们,使春天发现的背景下,适当的实现类。

换句话说,豆是不是由他们实现类区分开来,因为你可能想改变实现类中的bean,而不改变依赖于它的豆类。 如果你想在同一类型的不同豆加以区分,使用逻辑bean的名字改为:

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

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


文章来源: Spring No unique bean of type