SpringBoot加载外部/内部配置文件的顺序和覆盖优先级总结

一、加载顺序

bootstrap => application=> application.profiles.active / application.profiles.include

二、覆盖优先级

同名文件会以高优先级的配置文件中已有的配置项为准;如果高优先级的配置文件中不存在,但低优先级的配置文件中却存在的配置项,则会启用低优先级的配置项; 也就是说这是一个存在高低优先级覆盖的并集

2.1 默认优先级

在jar包的同一目录的config文件夹下 => jar包的同级目录 => 在classpath下config文件夹 => classpath根目录下

2.2 自定义外部配置文件

可以使用spring.config.location配置在启动时指定配置文件位置,这样指定后就不会去默认位置寻找配置文件
在使用 spring.config.location 指定外部配置文件时,需要此份配置文件需全量满足当前工程运行时所需,因为它不会去与 resources 目录下的配置文件去做 merge 操作

如果需要和默认位置的配置文件合并的话,可以使用spring.config.additional-location,语法相同

java -jar myproject.jar --spring.config.location=classpath:/1.properties,classpath:/2.properties
或者
java -jar myproject.jar --spring.config.location=./1.properties,./2.properties

也可以指定配置目录位置,指定目录时要以/结尾
java -jar myproject.jar --spring.config.location=classpath:/config/,classpath:/config1/
或者
java -jar myproject.jar --spring.config.location=./config/,./config1/
当spring.config.location指定了后,如果其包含多个值,优先级顺序为从后向前

如果配置在环境变量里,由于大多数操作系统不允许使用点分隔的键名,可以使用下划线(SPRING_CONFIG_LOCATION而不是spring.config.location)

你可能感兴趣的:(spring,boot,spring,java)