SpringBoot项目启动时配置文件的加载顺序和动态指定外部配置文件

我们都知道springboot启动会扫描一下位置的application.properties或者application.yml作为默认的配置文件, 今天来总结下SpringBoot的配置文件的加载顺序, 以及如何在jar包启动或者idea中启动springboot项目时如何动态指定配置文件

配置文件的优先级

配置文件路径的加载顺序
  1. 工程根目录:./config/
  2. 工程根目录:./
  3. classpath:/config/
  4. classpath:/
    ps: classpath: 即放在resources里面
properties和yml的加载顺序

bootstrap.properties优先于application.properties
properties优先于yml
顺序为properties>yaml>yml

profile文件的加载顺序

优先加载带profile的配置文件

jar包外部的application-{profile}.propertie或application.yml(带spring.profile)配置文件
jar包内部的application-{profile}.propertie或application.yml(带spring.profile)配置文件

其次加载不带profile的配置文件

jar包外部的application.propertie或application.yml(不带spring.profile)配置文件
jar包内部的application.propertie或application.yml(不带spring.profile)配置文件

加载的优先级顺序是从上向下加载,并且所有的文件都会被加载,高优先级的内容会覆盖底优先级的内容,形成互补配置

SpringBoot项目Jar包启动时指定外部配置文件

java -jar test.jar --spring.config.name=test1 --spring.config.location=D:/config/test/

如果需要指定多个目录或者文件, 逗号分开即可,并且需要注意的时,如果目录,目录结束的/不能省略。

SpringBoot项目Idea中启动时指定外部配置文件

VM Options : -Dspring.config.location=D:/CONFIG/test/

在这里插入图片描述

Environment variables: spring.config.location=D:/CONFIG/test/

在这里插入图片描述