已指定限定符但获取NoUniqueBeanDefinitionException

时间:2017-04-12 13:32:05

标签: java spring

现在正在Spring学习dependence injection的新手。 我已经知道Qualifier注释用于区分差异依赖关系。但是下面的代码不起作用。

    @Bean
    @Qualifier("taylor")
    public CDPlayer cheapCDPlayer(CompactDisc cd){
        return new CheapCDPlayer(cd);
    }

此处CompactDisc是由两个班级SgtPeppersTaylor实施的界面。 Taylor使用限定符taylor进行注释,我希望将其注入此方法。但我仍然得到NoUniqueBeanDefinitionException。怎么解决?任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

@Configuration在示例中,Bean可以引用方法签名中的现有bean。 您可以将@Qualifier添加到方法签名中,如此

@Bean
public CDPlayer cheapCDPlayer( @Qualifier("taylor") CompactDisc cd){
        return new CheapCDPlayer(cd);
}

解决问题

答案 1 :(得分:0)

你可以使用@Resource来选择你的impl

@Resource(name="taylor")

答案 2 :(得分:0)

不确定我的回答是否有助于解决这个问题,但是如果有人拼命寻找合适的解决方案"但是无法通过任何限定符来解决他的问题可能是一个依赖性碰撞问题。排除"错误"依赖(来自pom.xml)可能有所帮助。 (有时候它可能很棘手。有一次我在两个项目中有这样一个错误的依赖关系。一个项目依赖于另一个项目。依赖项只能从"右项目中删除之后它起作用了。)

答案 3 :(得分:-1)

由于您想在此方法中注入“Taylor”bean,请使用@Autowired代替@Qualifier("taylor")