java Spring@Qualifier不起作用,但@Resource起作用?
我有以下代码:
@Qualifier("dateObjectMapper")
private ObjectMapper mapper;
@Autowired
DefaultProjectTweetSearchProvider(
Client client,
ObjectMapper mapper) {
this.client = client;
this.mapper = mapper;
}
上述代码不起作用。我收到一条错误消息,说明spring容器无法决定在ObjectMapper
的构造函数中使用哪个bean。如果我把@Resource(name = "dateObjectMapper")
放在我的mapper
字段上面,它就可以工作了。为什么在这种情况下有效?我有两个ObjectMapper
豆子,如下所示:
@Bean
ObjectMapper dateObjectMapper() {
// ...
}
@Bean
@Primary
ObjectMapper defaultObjectMapper() {
// ...
}
# 1 楼答案
使用构造函数注入时,
@Qualifier
注释必须位于参数上注意bean的名称。你的例子:
将创建与@Bean方法同名的Bean:
dateObjectMapper
和defaultObjectMapper