日常开发和公布咱们常常将 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
更多配置请参考官网文档.