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

升级Spring Boot2.6.1后ConstructorResolver忽略嵌入式MongoDB版本配置报错

问题根因

Spring Boot 2.6.x版本对嵌入式MongoDB的自动配置逻辑做了拆分调整:原内置在spring-boot-starter-data-mongodb中的嵌入式MongoDB属性绑定、自动配置逻辑被单独抽离为独立的starterspring-boot-starter-data-mongodb-embedded。你当前的pom.xml中没有引入该依赖,导致EmbeddedMongoProperties类没有被Spring上下文识别并加载配置,你在application.properties中写的spring.mongodb.embedded前缀的配置全部无法绑定,属性自然为null,触发版本校验的异常。

解决方案

方案一:补全缺失的依赖(推荐)

在pom.xml的dependencies节点中添加以下依赖,版本会继承你父pom中声明的Spring Boot版本,无需额外指定:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb-embedded</artifactId>
</dependency>

添加后重新启动项目,你原有application.properties中的配置就会被正常绑定到EmbeddedMongoProperties,异常会自动消除。

方案二:手动声明MongodConfig Bean

如果你不想引入额外的starter,可以直接自定义配置类手动注册MongoDB嵌入式实例的配置Bean,直接指定版本等参数,样例代码如下:

import de.flapdoodle.embed.mongo.config.MongodConfig;
import de.flapdoodle.embed.mongo.config.Net;
import de.flapdoodle.embed.mongo.config.Storage;
import de.flapdoodle.embed.mongo.distribution.Version;
import de.flapdoodle.embed.process.runtime.Network;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class EmbeddedMongoConfig {
    @Bean
    public MongodConfig mongodConfig() throws Exception {
        return MongodConfig.builder()
                .version(Version.V3_6_3)
                .net(new Net("127.0.0.1", 27017, Network.localhostIsIPv6()))
                .storage(new Storage("/home/craig/.ca.footeware.web-mongodb/", null, 0))
                .build();
    }
}

注册该Bean后,Spring Boot自动配置会优先使用你自定义的配置,不会再触发版本缺失的校验。

额外提醒

嵌入式MongoDB本身设计为测试环境使用,不推荐在正式生产环境部署:其没有完善的数据持久化保障、不支持集群高可用,故障时数据丢失风险极高,生产环境建议替换为独立部署的MongoDB服务实例。

内容的提问来源于stack exchange,提问作者CraigFoote

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:54:00