diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataConfiguration.java index f3647113cd3..91f2e841118 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataConfiguration.java @@ -67,6 +67,7 @@ abstract class ElasticsearchDataConfiguration { } @Bean + @ConditionalOnMissingBean EntityMapper entityMapper(SimpleElasticsearchMappingContext mappingContext) { return new DefaultEntityMapper(mappingContext); } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataAutoConfigurationTests.java index f22c9c23c5b..bcdf84dfc62 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataAutoConfigurationTests.java @@ -28,6 +28,7 @@ import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.testsupport.testcontainers.DisabledWithoutDockerTestcontainers; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.data.elasticsearch.core.ElasticsearchEntityMapper; import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; import org.springframework.data.elasticsearch.core.EntityMapper; @@ -44,6 +45,7 @@ import static org.mockito.Mockito.mock; * @author Phillip Webb * @author Artur Konczak * @author Brian Clozel + * @author Peter-Josef Meisch */ @DisabledWithoutDockerTestcontainers class ElasticsearchDataAutoConfigurationTests { @@ -90,6 +92,11 @@ class ElasticsearchDataAutoConfigurationTests { .hasSingleBean(ElasticsearchConverter.class)); } + @Test + void defaultEntityMapperRegistered() { + this.contextRunner.run((context) -> assertThat(context).hasSingleBean(EntityMapper.class)); + } + @Test void customTransportTemplateShouldBeUsed() { this.contextRunner.withUserConfiguration(CustomTransportTemplate.class).run((context) -> assertThat(context) @@ -109,6 +116,12 @@ class ElasticsearchDataAutoConfigurationTests { .contains("reactiveElasticsearchTemplate")); } + @Test + void customEntityMapperShouldeBeUsed() { + this.contextRunner.withUserConfiguration(CustomEntityMapper.class).run((context) -> assertThat(context) + .getBeanNames(EntityMapper.class).containsExactly("elasticsearchEntityMapper")); + } + @Configuration(proxyBeanMethods = false) static class CustomTransportTemplate { @@ -139,4 +152,14 @@ class ElasticsearchDataAutoConfigurationTests { } + @Configuration(proxyBeanMethods = false) + static class CustomEntityMapper { + + @Bean + EntityMapper elasticsearchEntityMapper() { + return mock(ElasticsearchEntityMapper.class); + } + + } + }