This commit makes sure that no high-level client is auto-configured if
a low-level client is registered as a bean.

See gh-22358
This commit is contained in:
Stephane Nicoll 2020-09-08 12:17:58 +02:00
parent aa3c93078e
commit a73b7bb7dd
2 changed files with 9 additions and 0 deletions

View File

@ -50,6 +50,7 @@ import org.springframework.util.StringUtils;
*/
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(RestHighLevelClient.class)
@ConditionalOnMissingBean(RestClient.class)
@EnableConfigurationProperties(ElasticsearchRestClientProperties.class)
public class ElasticsearchRestClientAutoConfiguration {

View File

@ -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)