From e1dec6061db4c8483e5def4fbb60ee79366c422b Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Wed, 22 Jul 2015 16:46:49 +0100 Subject: [PATCH] Make MongoRepositoriesAutoConfiguration order more explicit It has to come after MongoDataAutoConfiguration (not MongoAutoConfiguration) because it looks for beans that are defined there (e.g. MongoMappingContext which is the one that scans for entities). Fixes gh-3577 --- .../mongo/MongoRepositoriesAutoConfiguration.java | 4 ++-- .../MongoRepositoriesAutoConfigurationTests.java | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoRepositoriesAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoRepositoriesAutoConfiguration.java index 3538df58bd7..6dc09c70c18 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoRepositoriesAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoRepositoriesAutoConfiguration.java @@ -21,7 +21,7 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; +import org.springframework.boot.autoconfigure.mongo.MongoDataAutoConfiguration; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.data.mongodb.repository.MongoRepository; @@ -58,7 +58,7 @@ import com.mongodb.Mongo; MongoRepositoryConfigurationExtension.class }) @ConditionalOnProperty(prefix = "spring.data.mongodb.repositories", name = "enabled", havingValue = "true", matchIfMissing = true) @Import(MongoRepositoriesAutoConfigureRegistrar.class) -@AutoConfigureAfter(MongoAutoConfiguration.class) +@AutoConfigureAfter(MongoDataAutoConfiguration.class) public class MongoRepositoriesAutoConfiguration { } diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/MongoRepositoriesAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/MongoRepositoriesAutoConfigurationTests.java index edb4abcbc6f..042472f49bb 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/MongoRepositoriesAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/MongoRepositoriesAutoConfigurationTests.java @@ -16,6 +16,8 @@ package org.springframework.boot.autoconfigure.data.mongo; +import java.util.Set; + import org.junit.After; import org.junit.Test; import org.springframework.beans.factory.NoSuchBeanDefinitionException; @@ -29,11 +31,14 @@ import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; import org.springframework.boot.autoconfigure.mongo.MongoDataAutoConfiguration; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Configuration; +import org.springframework.data.mongodb.core.mapping.MongoMappingContext; import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; +import org.springframework.test.util.ReflectionTestUtils; import com.mongodb.Mongo; import com.mongodb.MongoClient; +import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertNotNull; @@ -61,6 +66,12 @@ public class MongoRepositoriesAutoConfigurationTests { assertNotNull(this.context.getBean(CityRepository.class)); Mongo mongo = this.context.getBean(Mongo.class); assertThat(mongo, is(instanceOf(MongoClient.class))); + MongoMappingContext mappingContext = this.context + .getBean(MongoMappingContext.class); + @SuppressWarnings("unchecked") + Set> entities = (Set>) ReflectionTestUtils + .getField(mappingContext, "initialEntitySet"); + assertThat(entities.size(), is(equalTo(1))); } @Test