本文主要是介绍springboot 配置文件加载顺序 以及启动时指定配置文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
配置文件位置以及读取的顺序
存放目录
Application属性文件,按优先级排序,位置高的将覆盖位置底的,顺序1会覆盖下面所有的
- 当前项目目录下的一个/config子目录
- 当前项目目录
- 项目的resources即一个classpath下的/config包
-
项目的resources即classpath根路径(root)
如图:
读取顺序
如果在不同的目录中存在多个配置文件,它的读取顺序是:
1、config/application.properties(项目根目录中config目录下)
2、config/application.yml
3、application.properties(项目根目录下)
4、application.yml
5、resources/config/application.properties(项目resources目录中config目录下)
6、resources/config/application.yml
7、resources/application.properties(项目的resources目录下)
8、resources/application.yml
注意
1、如果同一个目录下,有application.yml也有application.properties,默认先读取application.properties。
2、如果同一个配置属性,在多个配置文件都配置了,默认使用第1个读取到的,后面读取的不覆盖前面读取到的。
3、创建SpringBoot项目时,一般的配置文件放置在项目的resources目录下,因为配置文件的修改,通过热部署不用重新启动项目,而热部署的作用范围是classpath下
启动时指定配置文件
只指定端口
nohup java -jar ***.jar --server.port=8080 > info.log 2>&1 &
指定环境(spring.profiles.active)
nohup java -jar -Dspring.profiles.active=test ***.jar > info.log 2>&1 &
指定外部配置文件
nohup java -jar ***.jar --spring.config.location=/xx/application.yml > info.log 2>&1 &
或者
nohup java -jar ***.jar --spring.config.location=/xx/xonfig/ > info.log 2>&1 &
特别注意:关于执行java -jar 命令时配置文件相对位置问题
经测试:
在test 目录下执行java -jar ./data/test.jar ,config目录下的配置文件是不生效的。
在data目录下执行 java -jar test.jar,config 目录下的配置文件生效。
猜测:在某个路径下执行java -jar /xx/xx.jar 时、会在执行命令所在的路径 寻找找config目录或者配置文件
可以在任何目录下、通过java -jar /xx/xx.jar --spring.config.location=/xx/xonfig/ 来执行配置文件的位置
这篇关于springboot 配置文件加载顺序 以及启动时指定配置文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!