首页 > 其他分享 >springboot中配置文件的读取顺序

springboot中配置文件的读取顺序

时间:2022-11-26 23:03:10浏览次数:45  
标签:优先级 springboot 配置文件 配置 application 加载 properties 读取

1.简介

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

2.优先级测试

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

springboot中配置文件的读取顺序_加载

解释:

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

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

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

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

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

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

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

具体体现:

springboot中配置文件的读取顺序_加载_02

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

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

springboot中配置文件的读取顺序_加载_03

注:

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,配置文件,配置,application,加载,properties,读取
From: https://blog.51cto.com/u_11990719/5889239

相关文章

  • Springboot中application.yml、application.properties和bootStrap.yml的加载顺序
    一、SpringApplication位于项目根目录,所以所有得代码要和SpringApplication所在目录平级或下一级二、以jar包发布springboot项目时,默认会先使用jar包跟目录下的application.......
  • SpringBoot2笔记
    SpringBoot2:注意事项:​1、SpringBoot的启动类需要和逻辑代码所在的包在同一个包下。(主程序所在的包及其以下子包中的组件都会进行扫描)​......
  • SpringBoot(监控)
    1-2-3-然后使用json.cnjson的可视化工具,进行查看。4-待更新...............
  • springboot事务源码分析
    1、本次使用springboot框架分析事务源码2、打开spring-boot-autoconfigure查看spring.factories发现关于事务的自动配置包含:DataSourceTransactionManagerAutoConfigurati......
  • ORA-00742: 日志读取在线程 %d 序列 %d 块 %d 中检测到写入丢失情况----惜分飞
    标题:ORA-00742:日志读取在线程%d序列%d块%d中检测到写入丢失情况作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]由于......
  • springboot
    目录单元测试单元测试要用到spring管理的bean那种......
  • springboot学习
    package com.cy.pj.common.cache;@Component        @Scope("singleton")@Lazy//不会启动的时候就加载类        public class DefaultCache{......
  • 【Amadeus原创】python读取pdf
    1.vscode安装python插件2.vscode终端安装pdfminer.six,pdfplumber​​python-mpipinstallpdfminer.six​​​​python-mpipinstallpdfplumber​​3.在代码目......
  • TypeScript学习笔记-04 tsconfig.json配置文件
    tsconfig.json一般常用的配置如下所示,可以按需要进行配置。{/*tsconfig.json是ts编译器的配置文件,ts编译器可以根据他的信息来对代码进行编译//in......
  • springboot之redis启动时的三个警告
    第一个警告将net.core.somaxconn=1024添加到/etc/sysctl.conf中,然后执行sysctl-p生效配置。——20221116@设置的不起作用第二个警告将vm.overcommit_memory=1添......