diff --git a/src/main/java/org/springframework/data/elasticsearch/config/AbstractElasticsearchConfiguration.java b/src/main/java/org/springframework/data/elasticsearch/config/AbstractElasticsearchConfiguration.java index 97e680d90..4f6702cdb 100644 --- a/src/main/java/org/springframework/data/elasticsearch/config/AbstractElasticsearchConfiguration.java +++ b/src/main/java/org/springframework/data/elasticsearch/config/AbstractElasticsearchConfiguration.java @@ -31,11 +31,10 @@ public abstract class AbstractElasticsearchConfiguration extends ElasticsearchCo /** * Return the {@link RestHighLevelClient} instance used to connect to the cluster.
- * Annotate with {@link Bean} in case you want to expose a {@link RestHighLevelClient} instance to the - * {@link org.springframework.context.ApplicationContext}. * * @return never {@literal null}. */ + @Bean public abstract RestHighLevelClient elasticsearchClient(); /** @@ -44,7 +43,8 @@ public abstract class AbstractElasticsearchConfiguration extends ElasticsearchCo * @return never {@literal null}. */ @Bean(name = { "elasticsearchOperations", "elasticsearchTemplate" }) - public ElasticsearchOperations elasticsearchOperations(ElasticsearchConverter elasticsearchConverter) { - return new ElasticsearchRestTemplate(elasticsearchClient(), elasticsearchConverter); + public ElasticsearchOperations elasticsearchOperations(ElasticsearchConverter elasticsearchConverter, + RestHighLevelClient elasticsearchClient) { + return new ElasticsearchRestTemplate(elasticsearchClient, elasticsearchConverter); } } diff --git a/src/main/java/org/springframework/data/elasticsearch/config/AbstractReactiveElasticsearchConfiguration.java b/src/main/java/org/springframework/data/elasticsearch/config/AbstractReactiveElasticsearchConfiguration.java index 2e9a1882d..7efba437a 100644 --- a/src/main/java/org/springframework/data/elasticsearch/config/AbstractReactiveElasticsearchConfiguration.java +++ b/src/main/java/org/springframework/data/elasticsearch/config/AbstractReactiveElasticsearchConfiguration.java @@ -18,7 +18,6 @@ package org.springframework.data.elasticsearch.config; import org.elasticsearch.action.support.IndicesOptions; import org.elasticsearch.action.support.WriteRequest.RefreshPolicy; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient; import org.springframework.data.elasticsearch.core.ReactiveElasticsearchOperations; import org.springframework.data.elasticsearch.core.ReactiveElasticsearchTemplate; @@ -31,16 +30,14 @@ import org.springframework.lang.Nullable; * @since 3.2 * @see ElasticsearchConfigurationSupport */ -@Configuration public abstract class AbstractReactiveElasticsearchConfiguration extends ElasticsearchConfigurationSupport { /** * Return the {@link ReactiveElasticsearchClient} instance used to connect to the cluster.
- * Annotate with {@link Bean} in case you want to expose a {@link ReactiveElasticsearchClient} instance to the - * {@link org.springframework.context.ApplicationContext}. * * @return never {@literal null}. */ + @Bean public abstract ReactiveElasticsearchClient reactiveElasticsearchClient(); /** @@ -49,9 +46,10 @@ public abstract class AbstractReactiveElasticsearchConfiguration extends Elastic * @return never {@literal null}. */ @Bean - public ReactiveElasticsearchOperations reactiveElasticsearchTemplate(ElasticsearchConverter elasticsearchConverter) { + public ReactiveElasticsearchOperations reactiveElasticsearchTemplate(ElasticsearchConverter elasticsearchConverter, + ReactiveElasticsearchClient reactiveElasticsearchClient) { - ReactiveElasticsearchTemplate template = new ReactiveElasticsearchTemplate(reactiveElasticsearchClient(), + ReactiveElasticsearchTemplate template = new ReactiveElasticsearchTemplate(reactiveElasticsearchClient, elasticsearchConverter); template.setIndicesOptions(indicesOptions()); template.setRefreshPolicy(refreshPolicy()); diff --git a/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupport.java b/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupport.java index 7be1c98c7..a56ffe0d1 100644 --- a/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupport.java +++ b/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupport.java @@ -40,15 +40,16 @@ import org.springframework.util.StringUtils; * @author Peter-Josef Meisch * @since 3.2 */ -@Configuration +@Configuration(proxyBeanMethods = false) public class ElasticsearchConfigurationSupport { @Bean public ElasticsearchConverter elasticsearchEntityMapper( - SimpleElasticsearchMappingContext elasticsearchMappingContext) { + SimpleElasticsearchMappingContext elasticsearchMappingContext, ElasticsearchCustomConversions elasticsearchCustomConversions) { + MappingElasticsearchConverter elasticsearchConverter = new MappingElasticsearchConverter( elasticsearchMappingContext); - elasticsearchConverter.setConversions(elasticsearchCustomConversions()); + elasticsearchConverter.setConversions(elasticsearchCustomConversions); return elasticsearchConverter; } @@ -60,11 +61,11 @@ public class ElasticsearchConfigurationSupport { * @return never {@literal null}. */ @Bean - public SimpleElasticsearchMappingContext elasticsearchMappingContext() { + public SimpleElasticsearchMappingContext elasticsearchMappingContext(ElasticsearchCustomConversions elasticsearchCustomConversions) { SimpleElasticsearchMappingContext mappingContext = new SimpleElasticsearchMappingContext(); mappingContext.setInitialEntitySet(getInitialEntitySet()); - mappingContext.setSimpleTypeHolder(elasticsearchCustomConversions().getSimpleTypeHolder()); + mappingContext.setSimpleTypeHolder(elasticsearchCustomConversions.getSimpleTypeHolder()); return mappingContext; } diff --git a/src/test/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupportUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupportUnitTests.java index d1bbfe838..c0d319401 100644 --- a/src/test/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupportUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupportUnitTests.java @@ -18,6 +18,7 @@ package org.springframework.data.elasticsearch.config; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; +import org.springframework.context.annotation.Bean; import reactor.core.publisher.Mono; import java.util.Collection; @@ -114,6 +115,7 @@ public class ElasticsearchConfigurationSupportUnitTests { static class ReactiveRestConfig extends AbstractReactiveElasticsearchConfiguration { @Override + @Bean public ReactiveElasticsearchClient reactiveElasticsearchClient() { ReactiveElasticsearchClient client = mock(ReactiveElasticsearchClient.class); when(client.info()).thenReturn(Mono diff --git a/src/test/java/org/springframework/data/elasticsearch/core/index/MappingContextBaseTests.java b/src/test/java/org/springframework/data/elasticsearch/core/index/MappingContextBaseTests.java index af0e5068a..8ce568b85 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/index/MappingContextBaseTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/index/MappingContextBaseTests.java @@ -34,8 +34,9 @@ abstract class MappingContextBaseTests { private SimpleElasticsearchMappingContext setupMappingContext() { - SimpleElasticsearchMappingContext mappingContext = new ElasticsearchConfigurationSupport() - .elasticsearchMappingContext(); + ElasticsearchConfigurationSupport configurationSupport = new ElasticsearchConfigurationSupport(); + SimpleElasticsearchMappingContext mappingContext = configurationSupport + .elasticsearchMappingContext(configurationSupport.elasticsearchCustomConversions()); mappingContext.initialize(); return mappingContext; } diff --git a/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/ElasticsearchRestTemplateConfiguration.java b/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/ElasticsearchRestTemplateConfiguration.java index 9f3dc2a52..16de3a40c 100644 --- a/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/ElasticsearchRestTemplateConfiguration.java +++ b/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/ElasticsearchRestTemplateConfiguration.java @@ -68,9 +68,9 @@ public class ElasticsearchRestTemplateConfiguration extends AbstractElasticsearc } @Override - public ElasticsearchOperations elasticsearchOperations(ElasticsearchConverter elasticsearchConverter) { - RestHighLevelClient client = elasticsearchClient(); - return new ElasticsearchRestTemplate(client, elasticsearchConverter) { + public ElasticsearchOperations elasticsearchOperations(ElasticsearchConverter elasticsearchConverter, + RestHighLevelClient elasticsearchClient) { + return new ElasticsearchRestTemplate(elasticsearchClient, elasticsearchConverter) { @Override public T execute(ClientCallback callback) { try {