SpringBoot外部配置文件加载顺序优先级

2.10 外部配置文件加载优先级

SpringBoot配置文件不仅可以在application.properties/application.yml文件下配置 还可以在项目外面配置

这里我重点介绍几个

1.命令行参数

2.jar包外部的application-{profile}.properties文件或者application.yml(带spring.profile)属性的配置文件

3.jar包内部的application-{profile}.properties文件或者application.yml(带spring.profile)属性的配置文件

4.jar包外部的application.properties或者application.yml

5.jar包内部的application.properties或者application.yml

这里加载配置文件的优先级我是从高到低顺序排列的,即

命令行参数>>jar外部的配置文件(带spring.profile属性的)>>jar内部的配置文件带(spring.profile属性的)>>

jar包外部的不带(spring.profile属性的)>>jar包内部的不带(spring.profile属性的)

当然这里的配置文件加载与配置文件的加载位置相同,高优先级覆盖低优先级的相同内容,不相同的内容会形成互补配置,现在我们使用Maven打包这个项目,打包项目Maven只会打包main下面的java以及resources下面的资源,


现在我们来演示

SpringBoot外部配置文件加载顺序优先级

这里我在resources下配置了两个application.properties,一个在config目录下,一个在resources目录下,

根据Springboot配置文件加载顺序,这里在复习一遍

项目下的config下的配置文件优先级大于项目下的配置文件大于类路径下的config文件下的配置文件大于类路径下的配置文件

如果我们把SpringBoot项目打成了一个jar包,

在jar的同级别目录有一个config目录,config目录下有一个配置文件

jar同级别目录也有一个配置文件,

打好的jar里面resources目录下也有一个config目录并且这个目录下也有一个配置文件,

打好的jar包里面resources目录下也有一个配置文件.总共四个配置文件,

总共四个配置文件,在启动SpringBoot应用时,会优先加载外部config目录下的的配置文件,在加载外部的配置文件,在加载resources目录下config目录下的配置文件,在加载resource下的配置文件,相同的属性高优先级的覆盖低优先级的,不同的属性所有配置文件下形成互补配置