diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientAutoConfiguration.java index b77922f4a8..e30da5b261 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientAutoConfiguration.java @@ -50,6 +50,7 @@ import org.springframework.util.StringUtils; */ @Configuration(proxyBeanMethods = false) @ConditionalOnClass(RestHighLevelClient.class) +@ConditionalOnMissingBean(RestClient.class) @EnableConfigurationProperties(ElasticsearchRestClientProperties.class) public class ElasticsearchRestClientAutoConfiguration { diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientAutoConfigurationTests.java index 3acf36d131..17e2339ac4 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientAutoConfigurationTests.java @@ -45,6 +45,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; /** * Tests for {@link ElasticsearchRestClientAutoConfiguration}. @@ -69,6 +70,13 @@ class ElasticsearchRestClientAutoConfigurationTests { .hasSingleBean(RestHighLevelClient.class)); } + @Test + void configureWhenCustomRestClientShouldBackOff() { + this.contextRunner.withBean("customRestClient", RestClient.class, () -> mock(RestClient.class)) + .run((context) -> assertThat(context).doesNotHaveBean(RestHighLevelClient.class) + .hasSingleBean(RestClient.class).hasBean("customRestClient")); + } + @Test void configureWhenCustomRestHighLevelClientShouldBackOff() { this.contextRunner.withUserConfiguration(CustomRestHighLevelClientConfiguration.class)