Spring Boot 2.7.10中EmbeddedMongoAutoConfiguration抛数组越界异常,MongoTemplate无法初始化
解决Spring Boot 2.7.10中@SpringBootTest与嵌入式MongoDB兼容问题
问题根源
你设置的嵌入式MongoDB版本(4.4)与Spring Boot 2.7.10依赖的de.flapdoodle.embed.mongo组件版本不兼容,导致版本号解析时触发数组越界异常。Spring Boot 2.7.x对嵌入式MongoDB的版本适配范围有限,4.4版本的版本格式解析逻辑和底层依赖不匹配。
可行解决办法
1. 更换兼容的嵌入式MongoDB版本
Spring Boot 2.7.10官方适配的稳定嵌入式MongoDB版本为4.0.x系列,修改test/resources/application.properties:
spring.mongodb.embedded.version=4.0.26
该版本与当前Spring Boot的flapdoodle依赖完全兼容,不会出现版本解析的数组越界问题。
2. 排除自动配置,使用外部MongoDB或Mock实例
若测试不需要启动嵌入式MongoDB服务,可在测试类上排除自动配置类,避免初始化嵌入式服务:
@SpringBootTest(exclude = EmbeddedMongoAutoConfiguration.class) public class YourTestClass { // 测试逻辑 }
如果需要Mock MongoTemplate,可手动注入MockBean:
@SpringBootTest(exclude = EmbeddedMongoAutoConfiguration.class) public class YourTestClass { @MockBean private MongoTemplate mongoTemplate; // 测试用例代码 }
3. 升级flapdoodle.embed.mongo依赖版本
若坚持使用MongoDB 4.4版本,需手动升级de.flapdoodle.embed.mongo到支持4.4版本解析的版本,在pom.xml中添加:
<dependency> <groupId>de.flapdoodle.embed</groupId> <artifactId>de.flapdoodle.embed.mongo</artifactId> <version>3.4.1</version> </dependency>
此版本支持MongoDB 4.4+的版本解析,可解决数组越界问题,但需注意与Spring Boot其他依赖的兼容性。
内容的提问来源于stack exchange,提问作者fuat
相关产品推荐
相关产品推荐

