文章目录
application.yml文件的加载优先级(由高到低)
第一级命令行参数
java -jar demo.jar --spring.config.location=/path/to/application.yml
- 这个是在系统启动参数中直接指定,这个一般不用
第二级Jar包同级目录 /config
/path/to/demo.jar---jar包位置
/path/to/config/application.yml---配置文件位置
- 2级与3级留做系统打包后设置通用属性,2级常用于运维经理进行线上整体项目部署方案调控,
如下是 Jar包同级目录/config的情况,在**/config**文件夹下配置了的话,会覆盖外面application.yml的配置和jar包内部的application.yml配置
第三级Jar包同级目录
/path/to/demo.jar---jar包位置
/path/to/application.yml---配置文件位置
- 2级与3级留做系统打包后设置通用属性,3级服务于运维人员配置涉密线上环境
如下是Jar包同级目录的情况,会将配置的内容替换jar包里面原有的application.yml配置
第四级classpath 下的/config
src/main/resources/config/application.yml
- 4级和5级用于系统开发阶段设置通用属性,4级常用于项目经理进行整体项目属性调控
第五级classpath 根路径/
src/main/resources/application.yml
- 4级和5级用于系统开发阶段设置通用属性,5级服务于开发人员本机开发与测试
总结:
- 多层级配置文件间的属性采用叠加并覆盖的形式作用于程序。
- 如果同一个目录下,有application.yml也有application.properties,默认先读取application.properties。
- 如果同一个配置属性,在多个配置文件都配置了,默认使用第1个读取到的,后面读取的不覆盖前面读取到的。
- 先后加载顺序:若application 和bootstrap 在同一目录下:bootstrap先加载 application后加载
logback.xml 文件加载顺序
Spring Boot 在部署时会按照特定的顺序尝试加载 logback.xml 配置文件。以下是加载 logback.xml 的常见位置和加载顺序:
- 外部配置文件:通过命令行参数指定的外部配置文件。例如,使用 --spring.config.location 参数指定配置文件路径。
- 当前目录下的 /config 子目录
- 当前目录
- 类路径下的 /config 包
- 类路径的根目录
logback.xml 将会按照上述顺序依次查找,并使用找到的第一个配置文件。
如果你想要指定 logback.xml 的加载位置,可以在启动 Spring Boot 应用时通过命令行参数 --spring.config.location 指定。例如:
java -jar demo.jar --spring.config.location=file:/path/to/config/
注意:
- springboot在启动初,会加载内部的logback.xml,完全启动后,才会加载外部的logback.xml,所以最好保持两者一致
当application.yml 和 bootstrap.yml 同时存在时
- 则bootStrap.yml 的加载顺序要于application.yml,即bootStrap.yml 会优先被加载。
原理:
- bootstrap.yml 于应程序上下的引导阶段。
- bootstrap.yml 由Spring ApplicationContext加载。
- bootstrap.yml 可以理解成系统级别的⼀些参数配置,这些参数⼀般是不会变动的。
- application.yml 可以⽤来定义应⽤级别的,如果搭配 spring-cloud-config 使用 application.yml 定义的文件可以实现动态替换。