现在正在Spring
学习dependence injection
的新手。
我已经知道Qualifier
注释用于区分差异依赖关系。但是下面的代码不起作用。
@Bean
@Qualifier("taylor")
public CDPlayer cheapCDPlayer(CompactDisc cd){
return new CheapCDPlayer(cd);
}
此处CompactDisc
是由两个班级SgtPeppers
和Taylor
实施的界面。 Taylor
使用限定符taylor
进行注释,我希望将其注入此方法。但我仍然得到NoUniqueBeanDefinitionException
。怎么解决?任何帮助将不胜感激。
答案 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")