我有两种类型的豆子InterfaceA.我试图将bean注入到@Bean使用@Qualifier按名称自动装配的方法的参数中.令我惊讶的是,除非你的参数名称与bean名称匹配,否则Spring无法解析正确的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) {...}
}
Run Code Online (Sandbox Code Playgroud)
但得到了NoUniqueBeanDefinitionException.但是,如果我使用参数名称匹配组件名称,它可以正常工作.
@Configuration
public class AppConfig {
@Bean
@Autowired
public SomeOtherClass someOtherClass(InterfaceA classA) {...}
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么我不能使用名称@Resource或@Qualifier在这里使用自动装配?
将@Qualifier注释添加到参数而不是方法:
public SomeOtherClass someOtherClass(@Qualifier("classA") InterfaceA object) {...}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1402 次 |
| 最近记录: |