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

Spring Boot未读取config目录下的application.properties配置文件问题

我之前也碰到过类似的问题,结合Spring Boot的配置优先级规则,给你几个可行的解决方案:

首先先明确你的场景:你的项目目录结构是这样的

/data/portal/
├── portal.jar
└── config
    └── application.properties // 期望读取此文件

运行java -jar portal.jar时Spring Boot没加载外部config里的配置,反而用了jar内置的,大概率是这几个原因之一:运行命令的工作目录不对、打包时把config目录打进jar了,或者需要更明确地指定配置路径。

接下来一步步解决:

1. 直接明确指定配置文件路径

最稳妥的方式就是用--spring.config.location参数手动指定外部配置文件的绝对路径,这样Spring Boot会优先加载这个文件:

java -jar portal.jar --spring.config.location=file:/data/portal/config/application.properties

如果你想保留jar内的配置作为 fallback(外部配置里没定义的用jar里的),可以用逗号分隔多个路径:

java -jar portal.jar --spring.config.location=file:/data/portal/config/application.properties,classpath:/application.properties

2. 检查运行命令的工作目录

如果你不是在/data/portal/目录下执行的java -jar命令,比如你在/home目录下运行java -jar /data/portal/portal.jar,那Spring Boot默认会在当前工作目录(也就是/home)下找config目录,而不是jar所在的/data/portal/目录。这种情况要么先cd到/data/portal/再运行命令:

cd /data/portal/ && java -jar portal.jar

要么就用上面的绝对路径指定方式。

3. 排查Maven打包配置

如果你的Maven pom.xml里的resources配置把config目录包含进去了,那打包时这个目录会被打进jar包,导致jar内也有一份application.properties,可能会干扰优先级。你可以调整pom.xml的resources配置,只打包src/main/resources下的内容,排除外部的config目录:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>config/**</exclude>
            </excludes>
        </resource>
    </resources>
</build>

4. 用additional-location补充配置

如果你不想覆盖默认的配置优先级,只是想额外加载外部config目录的配置,可以用--spring.config.additional-location参数,注意路径要以/结尾:

java -jar portal.jar --spring.config.additional-location=file:/data/portal/config/

这个参数会在默认配置路径的基础上,额外加载指定目录下的配置,优先级比默认的外部config目录稍低,但不会覆盖原有规则。

按照上面的步骤来,应该就能解决Spring Boot不读取外部config配置的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:23:47