一、Spring Boot 配置文件扫描优先级
1、Spring Boot 启动会扫描以下位置的 application.properties
或者 application.yml/yaml
文件作为 Spring Boot 的默认配置文件
(1)当前jar
包所在目录下的子目录 config
文件夹中下的子目录
中的;
注:第一条配置只支持Liunx操作系统生效,部署项目也是在此环境中,此点可以忽略
(2)当前jar
包所在目录下的子目录 config
文件夹中;
(3)当前jar
包所在目录同级目录下;
(4)类路径(resource资源文件或者java目录下)下的子目录 config
文件夹中;
(5)类路径(resource资源文件或者java目录下)下(项目默认创建的配置文件)。
启动 Spring Boot 项目扫描这四个位置的配置文件的顺序优先级为:
优先级 1:当前
jar
包所在目录下的子目录config
文件夹中下的子目录
中
优先级 2:当前jar
包所在目录下的子目录config
文件夹中
优先级 3:当前jar
包所在目录同级目录下
优先级 4:类路径(resource资源文件或者java目录下)下的子目录config
文件夹中
优先级 5:类路径(resource资源文件或者java目录下)下的配置文件(默认创建的配置文件位置
)
官方文档说明:
也就是假如说当前项目下的 config 文件夹目录中有 application.yaml/yml 或者 application.properties 就直接扫描到并加载这个配置文件了,优先级由高到底,高优先级的配置会覆盖低优先级的配置。
那么就这样写死了吗 ?就不可以改变这个优先级顺序了吗 ?
像 SpringBoot 这么优秀的框架,肯定是可以自定义的。我们可以指定位置加载配置文件,可以通过 spring.config.location
来改变默认的配置文件位置。项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;这种情况,一般是后期运维做的多,相同配置,外部指定的配置文件优先级最高。
java -jar spring-boot-config.jar --spring.config.location=\
D:springboot/application.properties
或者
java -jar myproject.jar --spring.config.location=\
optional:classpath: