在Spring Boot应用程序中,我有以下内容:
public interface Car {
⋮
}
@Component
public class OldCar implements Car {
⋮
}
@Component
@Primary
public class NewCar implements Car {
⋮
}
@Component
public class Driver {
@Autowired
private Car theCar;
⋮
}
(注意:班级名称已被更改以保护公司机密。: - )
当我启动此应用时,它会弹出一个NoUniqueBeanDefinitionException
,指定:
无法自动装载战场...... theCar;嵌套异常是org.springframework.beans.factory.NoUniqueBeanDefinitionException没有定义[Car]类型的限定bean:期望的单个匹配bean但找到2:newCar,oldCar
但是,如果我将theCar
的类型修改为OldCar
或NewCar
(以消除歧义),一切正常。
在我看来,@Primary
没有达到预期的效果。我正在寻找关于我可以检查什么的想法,以便发现这种意外行为的潜在原因。
是什么导致这个?为什么@Primary
无效?