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

无法添加spring-dotenv依赖及SpringBoot连接MongoDB失败求助

问题与解决方案

问题概述

使用React、Spring Boot和MongoDB构建项目时,遇到以下问题:

  1. IDE提示spring-dotenv依赖及spring-boot-maven-plugin插件找不到
  2. Spring Boot启动时MongoDB连接失败,报错环境变量占位符未解析

错误信息

1. Maven依赖/插件报错

Dependency 'me.paulschwarz:spring-dotenv:2.5.4' not found
Dependency 'me.paulschwarz:spring-dotenv:2.5.4' not found
Dependency 'me.paulschwarz:spring-dotenv:2.5.4' not found
Plugin 'org.springframework.boot:spring-boot-maven-plugin:' not found
Plugin 'org.springframework.boot:spring-boot-maven-plugin:' not found

2. Spring Boot启动报错

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2023-06-19T17:04:01.904+05:30 ERROR 20836 --- [  restartedMain] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongo' defined in class path resource [org/springframework/boot/autoconfigure/mongo/MongoAutoConfiguration.class]: Failed to instantiate [com.mongodb.client.MongoClient]: Factory method 'mongo' threw exception with message: 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.
    ...(省略部分栈追踪)
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.
    ...(省略部分栈追踪)

当前配置文件

1. .env文件(resources目录下)

MONGO_DATABASE = "movies-api-db"
MONGO_USERNAME = "f20191081"
MONGO_PASSWORD = "AshuGunna98"
MONGO_CLUSTER = "cluster0.oobowit.mongodb.net"

2. application.properties

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

3. pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.1.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>dev.ayushKasara</groupId>
    <artifactId>movies</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>movies</name>
    <description>A simple API related movies</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <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>2.5.4</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

解决方案

1. 修正spring-dotenv依赖版本

Spring Boot 3.1.0与spring-dotenv 2.5.4存在兼容性问题,将依赖版本升级为适配Spring Boot 3的3.0.0版本:

<dependency>
    <groupId>me.paulschwarz</groupId>
    <artifactId>spring-dotenv</artifactId>
    <version>3.0.0</version>
</dependency>

2. 修复环境变量配置错误

  • .env文件修正:去掉变量值的引号和等号两侧的空格(引号会被解析为值的一部分,空格会导致变量名/值包含冗余字符):
MONGO_DATABASE=movies-api-db
MONGO_USERNAME=f20191081
MONGO_PASSWORD=AshuGunna98
MONGO_CLUSTER=cluster0.oobowit.mongodb.net
  • application.properties修正:将${env.MONGO_USER}改为${env.MONGO_USERNAME}(与.env中的变量名一致),并完善MongoDB连接URI:
spring.data.mongodb.database=${env.MONGO_DATABASE}
spring.data.mongodb.uri=mongodb+srv://${env.MONGO_USERNAME}:${env.MONGO_PASSWORD}@${env.MONGO_CLUSTER}/${env.MONGO_DATABASE}?retryWrites=true&w=majority

3. 解决Maven插件报错

spring-boot-maven-plugin可继承parent的版本,若IDE仍提示找不到,手动指定版本与parent一致:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
        <excludes>
            <exclude>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </exclude>
        </excludes>
    </configuration>
</plugin>

4. 验证步骤

  1. 保存所有修改后的文件
  2. 执行mvn clean install清理并构建项目
  3. 刷新IDEA的Maven依赖(点击右侧Maven面板的刷新按钮)
  4. 重启Spring Boot应用,检查是否正常连接MongoDB

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 15:31:58