日常开发和发布我们经常将 SpringBoot 的配置文件application.properties (或 application.yaml)直接放在项目目录下然后打包进 jar 包. 但是在很多时候, 我们可能因为 CI 需要或者安全管理需要集中管理配置文件, 这就涉及到外部配置文件的问题.
根据 SpringBoot 官方文档, 外部配置文件一般可以放到这4个地方:
- A
/config
subdirectory of the current directory- The current directory
- A classpath
/config
package- The classpath root
也就是:
- java 命令当前运行目录下的 config 目录;
- java 命令当前运行目录;
- classpath 目录下的 config 目录;
- classpath 目录下;
这四者的优先级从 1 到 4 依次降低. 也就是说在上面四个目录下都放置 application.properties 文件, 会优先使用 1. java 命令执行的目录下的 config 目录
.
具体如下图所示, 在 target/
目录下通过 java -jar app.jar
启动项目, 配置文件的优先级从高到低依次是 (1) -> (4) :
target/
|- application.properties (2)
|- config/
|- application.properties (1)
|- app.jar
|- application.properties (4)
|- config/
|- application.properties (3)
另外我们可以通过--spring.config.location=XXX
手动指定配置文件所在目录
cd target/
java -jar app.jar --spring.config.location=/data/config/springboot-sample/application.properties
# 或者只给目录. 注意: 一定要以斜线`/`结尾
java -jar app.jar --spring.config.location=/data/config/springboot-sample/
或者目录不变, 只是自定义文件名 (通过--spring.config.name=XXX
):
cd target/
java -jar app.jar --spring.config.name=myproject
更多配置请参考官方文档.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。