什么可能导致@Primary没有预期的效果?

时间:2015-06-16 21:40:02

标签: spring autowired

在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的类型修改为OldCarNewCar(以消除歧义),一切正常。

在我看来,@Primary没有达到预期的效果。我正在寻找关于我可以检查什么的想法,以便发现这种意外行为的潜在原因。

是什么导致这个?为什么@Primary无效?

0 个答案:

没有答案