我在配置文件中声明了2个RestTemplate:
@Configuration
MyConfig {
@Bean("restTemplate")
public RestTemplate restTemplate(RestTemplateBuilder builder, ApplicationContext ctx) {
// (...)
}
@Bean("noProxyRestTemplate")
public RestTemplate restTemplate(RestTemplateBuilder builder, ApplicationContext ctx) {
// (...)
}
}
然后,当我想使用“无代理” RestTemplate时,我正在使用:
@Autowired
@Qualifier("noProxyRestTemplate")
RestTemplate restTemplate;
但可以说,我没有放置任何限定词来查看发生冲突的地方:它选择了具有代理的那个,却没有看到2个有效的候选人。
这是怎么回事?当没有“ @Primary”批注时,为什么要使用默认选项?
答案 0 :(得分:1)
“作为后备,Spring使用属性名称作为默认的限定符值。” source
Spring将bean属性名称定义为restTemplate,将其与RestTemplate实现进行匹配