相关文章推荐
风度翩翩的凳子  ·  Interpretability of ...·  10 月前    · 
闷骚的跑步鞋  ·  数据库PostgreSQL PG ...·  11 月前    · 

内部配置文件加载顺序

Spring Boot程序启动时,会从以下位置加载配置文件:


项目根目录:当前项目下的/config目录下

项目根目录:当前项目的根目录下

classpath:classpath的/config目录下

classpath:classpath的根目录下

加载顺序为上面的排列顺序,高优先级配置文件的属性会生效


注意:优先级高的配置文件只覆盖优先级低的配置文件中的重复项。低级配置文件的独有项仍然有效。


目录结构如下:

image.png


测试:


测试方法: 通过配置Tomcat的端口号来检测他们的优先级顺序

测试步骤:


classpath的根目录下,即resources下的application.yml

在该位置的配置文件中设置Tomcat的端口号为8081,启动该项目

image.png

classpath的/config目录下,即resources中config目录下的application.yml

在该位置的配置文件中设置Tomcat的端口号为8082,重新启动该项目

image.png

当前项目的根目录

在该位置的配置文件中设置Tomcat的端口号为8083,重新启动该项目

image.png

当前项目下的/config目录下

在该位置的配置文件中设置Tomcat的端口号为8084,重新启动该项目

image.png

测试结果: 这四个位置的配置文件的优先级从低到高与测试的顺序一致。

外部配置文件加载顺序

通过指定配置spring.config.location来改变默认配置,一般在项目已经打包后,我们可以通过指令来加载外部文件的配置:

java -jar xxx.jar --spring.config.location=e://Java/application.yml

image.png


改变环境变量时,可以通过修改外部配置文件来实现,不需重新打包项目。


当然如果你觉得在命令行指定外部配置文件的位置太麻烦,那么我再告诉你种方法,那就是在你想启动的项目jar包所在的文件夹下新建一个application.yml配置文件,或者在该文件夹下新建一个config的文件夹并在config文件夹下新建一个application.yml配置文件。


image.png


这时候该项目就会自动读取该配置文件,如果两个同时存在,他们也是有优先级的,config文件下的yml文件是优先于与jar包同级的yml文件。


更详细的介绍可以查看Spring Boot 中文文档

image.png

Spring Boot资源文件问题总结(Spring Boot的静态资源访问,配置文件外置)
Spring Boot资源文件问题总结(Spring Boot的静态资源访问,配置文件外置)