内部配置文件加载顺序
Spring Boot程序启动时,会从以下位置加载配置文件:
项目根目录:当前项目下的/config目录下
项目根目录:当前项目的根目录下
classpath:classpath的/config目录下
classpath:classpath的根目录下
加载顺序为上面的排列顺序,高优先级配置文件的属性会生效
注意:优先级高的配置文件只覆盖优先级低的配置文件中的重复项。低级配置文件的独有项仍然有效。
目录结构如下:
测试:
测试方法: 通过配置Tomcat的端口号来检测他们的优先级顺序
测试步骤:
classpath的根目录下,即resources下的application.yml
在该位置的配置文件中设置Tomcat的端口号为8081,启动该项目
classpath的/config目录下,即resources中config目录下的application.yml
在该位置的配置文件中设置Tomcat的端口号为8082,重新启动该项目
当前项目的根目录
在该位置的配置文件中设置Tomcat的端口号为8083,重新启动该项目
当前项目下的/config目录下
在该位置的配置文件中设置Tomcat的端口号为8084,重新启动该项目
测试结果: 这四个位置的配置文件的优先级从低到高与测试的顺序一致。
外部配置文件加载顺序
通过指定配置spring.config.location来改变默认配置,一般在项目已经打包后,我们可以通过指令来加载外部文件的配置:
java -jar xxx.jar --spring.config.location=e://Java/application.yml
改变环境变量时,可以通过修改外部配置文件来实现,不需重新打包项目。
当然如果你觉得在命令行指定外部配置文件的位置太麻烦,那么我再告诉你种方法,那就是在你想启动的项目jar包所在的文件夹下新建一个application.yml配置文件,或者在该文件夹下新建一个config的文件夹并在config文件夹下新建一个application.yml配置文件。
这时候该项目就会自动读取该配置文件,如果两个同时存在,他们也是有优先级的,config文件下的yml文件是优先于与jar包同级的yml文件。
更详细的介绍可以查看Spring Boot 中文文档