springboot中配置文件的读取顺序

1.简介

在一个springboot项目中是可以存在多个配置文件的,那这些配置文件的所在位置以及具体内容的不同会影响他们被springboot加载的优先级吗?答案是肯定的,下面,我做一个四种不同位置的配置文件的优先级顺序测试,其实也就只有这四种不同位置。

2.优先级测试

项目中配置文件四种位置的截图:

 

 

解释:

上图中1234对应的配置文件中端口对应的配置为8090,8091,8092,8093;

上图的1234指的是各自位置的配置文件的优先级从高到底的一个顺序;

项目根路径中config文件夹下的配置文件:就是1所在的配置文件,优先级最高;

项目根路径中配置文件:就是2所在的配置文件,优先级第二;

类路径中config文件夹下的配置文件:就是3所在的配置文件,优先级第三;

类路径中配置文件:就是4所在的配置文件,优先级最低;

他们虽然各自加载的优先级不同,但各自的配置内容是互补的关系:举个例子,这四个配置文件,都对端口做了配置,那么按最高优先级的配置文件的配置为准,其他的比如连接数据库的配置只在4所在的位置的配置文件中配置,那么虽然配置端口只有最高优先级的配置文件起作用,但项目还是把4所在的配置文件中的数据库连接配置给加载了,他们在不重复的配置内容方面是一个互补的关系。

具体体现:

 

 

可以看到是8090起作用了,其余的端口配置文件端口配置失效

当把8090注释后,可以看到是8091端口配置起作用了,同理,3和4的配置文件也是一样。

 

 

注:

1、如果同一个目录下,有application.yml也有application.properties,默认先读取application.properties。

2、如果同一个配置属性,在多个配置文件都配置了,默认使用第1个读取到的,后面读取的不覆盖前面读取到的。

3、创建SpringBoot项目时,一般的配置文件放置在“项目的resources目录下”

4、app启动时,项目会先从application-dev.properties加载配置, 再从application.properties配置文件加载配置,如果有重复的配置, 则会以application.properties的配置为准。

5、除了配置文件还有启动程序的命令行参数,System.getproperties系统参数,还有环境变量。这三个是在配置文件之前最先执行。
-----------------------------------
springboot中配置文件的读取顺序
https://blog.51cto.com/nizuimeiabc1/6266131

posted @   Jack2030  阅读(256)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示