乐趣区

关于java:SpringBoot常见外部配置文件方式

日常开发和公布咱们常常将 SpringBoot 的配置文件 application.properties (或 application.yaml)间接放在我的项目目录下而后打包进 jar 包. 然而在很多时候, 咱们可能因为 CI 须要或者平安治理须要集中管理配置文件, 这就波及到内部配置文件的问题.

依据 SpringBoot 官网文档, 内部配置文件个别能够放到这 4 个中央:

  1. A /config subdirectory of the current directory
  2. The current directory
  3. A classpath /config package
  4. The classpath root

也就是:

  1. java 命令以后运行目录下的 config 目录;
  2. java 命令以后运行目录;
  3. classpath 目录下的 config 目录;
  4. 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

更多配置请参考官网文档.

退出移动版