项目场景:

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自动装配时会先按照类型匹配,匹配失败再按照方法名进行匹配。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐