Try Ithy free
Save

发布于 · 更新

Spring Boot 如何把 application.yml 放在 JAR 外部

如果部署环境需要各自的配置,可以先排除资源文件,再由 Spring Boot 在启动时读取外部目录。排除打包资源和指定运行时配置位置是两个步骤。

检查打包内容

在 Maven 的 build/resources 中为 src/main/resources 配置 excludes,将 application.yml 加入排除项。检查是否还存在 application.yaml、application.properties 或按环境命名的变体。运行 jar tf app.jar,确认目标文件没有进入 BOOT-INF/classes。

在运行时指定配置

例如将文件放在 /etc/myapp/application.yml,并启动 java -jar app.jar --spring.config.additional-location=file:/etc/myapp/。目录位置以斜线结束。additional-location 保留默认搜索位置,location 则替换默认位置。

验证加载行为

在外部配置中使用一个无敏感信息的标记值并检查程序行为。如果部署要求必须存在该目录,不要加 optional:。不要把生产密钥写入构建产物,也不要把配置内容打印到日志中。

參考資料

Spring Boot 外部化配置文档

Ask Ithy a follow-up