You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 15:32:45