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

Spring Boot连接MongoDB Atlas遇SRV主机名错误,求解决方案

Spring Boot连接MongoDB Atlas报错:SRV主机名格式不正确

错误信息

Caused by: java.lang.IllegalArgumentException: An SRV host name '${env.MONGO_CLUSTER}' was provided that does not contain at least three parts. It must contain a hostname, domain name and a top level domain.

我的配置

application.properties

spring.application.name=movies
spring.data.mongodb.database=${env.MONGO_DATABASE}
spring.data.mongodb.uri=mongodb+srv://${env.MONGO_USER}:${env.MONGO_PASSWORD}@${env.MONGO_CLUSTER}

.env文件

MONGO_USER=myUsername
MONGO_PASSWORD=Otek15767%2AGIRL2
MONGO_DATABASE=moviesdb
MONGO_CLUSTER=cluster0.mongodb.net

pom.xml依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>me.paulschwarz</groupId>
          <artifactId>spring-dotenv</artifactId>
        <version>4.0.0</version>
    </dependency>
</dependencies>

已尝试的操作

  • 验证连接串:从MongoDB Atlas复制连接串,替换为环境变量占位符
  • 编码特殊字符:将密码中的*编码为%2A
  • 验证环境变量:确认MONGO_CLUSTER设置为cluster0.mongodb.net
  • 重启应用:确保应用加载最新的.env配置

解决方案

  1. 修正环境变量占位符格式
    spring-dotenv默认识别${VAR_NAME}格式的占位符,而非${env.VAR_NAME}。修改application.properties中的变量引用:

    spring.data.mongodb.database=${MONGO_DATABASE}
    spring.data.mongodb.uri=mongodb+srv://${MONGO_USER}:${MONGO_PASSWORD}@${MONGO_CLUSTER}
    

    原错误显示${env.MONGO_CLUSTER}未被替换,说明该占位符格式不被spring-dotenv识别。

  2. 确认.env文件位置
    确保.env文件放在项目根目录(与pom.xml同级),多模块项目需放在启动模块的根目录下,spring-dotenv默认从根目录加载该文件。

  3. 验证连接串完整性
    替换变量后,最终连接串应为mongodb+srv://myUsername:Otek15767%2AGIRL2@cluster0.mongodb.net/moviesdb,可手动拼接后在MongoDB Atlas的连接测试工具中验证有效性。

  4. 检查版本兼容性
    spring-dotenv 4.0.0适配Spring Boot 3.x,若你的Spring Boot为2.x版本,需降级spring-dotenv至2.x系列(如2.5.4),避免版本不兼容导致变量加载失败。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 21:53:24