Skip to content

Commit c04d640

Browse files
committed
Scan for ElasticSearch's @document type
Closes gh-26028
1 parent 517998a commit c04d640

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataConfiguration.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,11 @@
2424
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
2525
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2626
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
27+
import org.springframework.boot.autoconfigure.domain.EntityScanner;
28+
import org.springframework.context.ApplicationContext;
2729
import org.springframework.context.annotation.Bean;
2830
import org.springframework.context.annotation.Configuration;
31+
import org.springframework.data.elasticsearch.annotations.Document;
2932
import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient;
3033
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
3134
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
@@ -61,9 +64,10 @@ ElasticsearchCustomConversions elasticsearchCustomConversions() {
6164

6265
@Bean
6366
@ConditionalOnMissingBean
64-
SimpleElasticsearchMappingContext mappingContext(
65-
ElasticsearchCustomConversions elasticsearchCustomConversions) {
67+
SimpleElasticsearchMappingContext mappingContext(ApplicationContext applicationContext,
68+
ElasticsearchCustomConversions elasticsearchCustomConversions) throws ClassNotFoundException {
6669
SimpleElasticsearchMappingContext mappingContext = new SimpleElasticsearchMappingContext();
70+
mappingContext.setInitialEntitySet(new EntityScanner(applicationContext).scan(Document.class));
6771
mappingContext.setSimpleTypeHolder(elasticsearchCustomConversions.getSimpleTypeHolder());
6872
return mappingContext;
6973
}

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchDataAutoConfigurationTests.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import org.junit.jupiter.api.Test;
2626

2727
import org.springframework.boot.autoconfigure.AutoConfigurations;
28+
import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage;
29+
import org.springframework.boot.autoconfigure.data.elasticsearch.city.City;
2830
import org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration;
2931
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
3032
import org.springframework.context.annotation.Bean;
@@ -105,6 +107,14 @@ void customReactiveRestTemplateShouldBeUsed() {
105107
.contains("reactiveElasticsearchTemplate"));
106108
}
107109

110+
@Test
111+
void shouldFilterInitialEntityScanWithDocumentAnnotation() {
112+
this.contextRunner.withUserConfiguration(EntityScanConfig.class).run((context) -> {
113+
SimpleElasticsearchMappingContext mappingContext = context.getBean(SimpleElasticsearchMappingContext.class);
114+
assertThat(mappingContext.hasPersistentEntityFor(City.class)).isTrue();
115+
});
116+
}
117+
108118
@Configuration(proxyBeanMethods = false)
109119
static class CustomElasticsearchCustomConversions {
110120

@@ -135,6 +145,12 @@ ReactiveElasticsearchTemplate reactiveElasticsearchTemplate() {
135145

136146
}
137147

148+
@Configuration(proxyBeanMethods = false)
149+
@TestAutoConfigurationPackage(City.class)
150+
static class EntityScanConfig {
151+
152+
}
153+
138154
static class MyConverter implements Converter<ElasticsearchRestTemplate, Boolean> {
139155

140156
@Override

0 commit comments

Comments
 (0)