Could not autowire. There is more than one bean of ‘RestHighLevelClient‘ type.
项目场景:Spring Boot整合ElasticSearch,进行索引库的增删查改问题描述:使用@Autowired自动装配RestHighLevelClient对象报红,鼠标置于上方提示Could not autowire. There is more than one bean of ‘RestHighLevelClient’ type.(不能自动装配,存在多个类型的RestHighLeve
项目场景:
Spring Boot整合ElasticSearch,进行索引库的增删查改
问题描述:
使用@Autowired自动装配RestHighLevelClient对象报红,鼠标置于上方提示
Could not autowire. There is more than one bean of ‘RestHighLevelClient’ type.
(不能自动装配,存在多个类型的RestHighLevelClient Bean)
Beans:
elasticsearchRestHighLevelClient (ElasticsearchRestClientConfigurations.class) getRestHighLevelClient (ESConfig.java)
原因分析:
添加@Bean时未指定id,并且方法名与@Autowired下方的变量名不一致
解决方案:
第一种解决方案:
如果配置的Bean有多个,那么为每一个@Bean指定id,
同时自动装配时,在@Autowired下方添加一个@Qualifier指定所装配的是哪一个Bean。
第二种解决方案:
将@Bean下方的方法名getRestHighLevelClient改为client,与@Autowired下方的变量名保持一致。
因为@Autowired自动装配时会先按照类型匹配,匹配失败再按照方法名进行匹配。
更多推荐
所有评论(0)