我有两个类型为InterfaceA
的bean。
我试图将bean注入@Bean
方法的参数,使用@Qualifier
按名称自动装配。
令我惊讶的是Spring除非你的参数名与bean名匹配,否则无法解析正确的bean。
我在尝试:
@Component
public class ClassA implements InterfaceA {
}
@Component
public class ClassB implements InterfaceA {
}
@Configuration
public class AppConfig {
@Bean
@Autowired
@Qualifier("classA")
public SomeOtherClass someOtherClass(InterfaceA object) {...}
}
但得到了NoUniqueBeanDefinitionException
。
但是,如果我使用与组件名称匹配的参数名称,它可以正常工作。
@Configuration
public class AppConfig {
@Bean
@Autowired
public SomeOtherClass someOtherClass(InterfaceA classA) {...}
}
有人可以解释为什么我不能在@Resource
或@Qualifier
使用名称进行自动装配吗?
答案 0 :(得分:7)
将@Qualifier
注释添加到参数中,而不是方法:
public SomeOtherClass someOtherClass(@Qualifier("classA") InterfaceA object) {...}