Spring Boot 2.6.0测试中@EnableAutoConfiguration(exclude)配置失效问题
问题原因
Spring Boot 2.6 版本对 @DataMongoTest 注解的自动配置加载逻辑做了调整,该注解默认内置的自动配置优先级高于测试类上单独添加的 @EnableAutoConfiguration 排除规则,导致原来的排除配置不生效,EmbeddedMongoAutoConfiguration 还是会被加载到上下文中触发实例化。
解决方案
推荐直接使用 @DataMongoTest 自带的排除属性实现配置过滤,修改后的测试类代码如下:
@DataMongoTest(excludeAutoConfiguration = EmbeddedMongoAutoConfiguration.class) @ContextConfiguration(initializers = {MongodbContainerInitializer.class}) @Slf4j @ActiveProfiles("test") public class PostRepositoryTest {}
注意:可以直接删除原来类上的 @EnableAutoConfiguration 注解,避免重复配置
其他可选方案
如果需要对整个 test profile 生效,不需要逐个修改测试类,可以在 application-test.yml 或 application-test.properties 中添加全局排除配置:
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration
内容的提问来源于stack exchange,提问作者Hantsy
相关产品推荐
相关产品推荐

