您现在的位置是:首页 > 正文

SpringBoot的配置文件加载位置,以及加载的优先级

2024-04-01 01:01:46阅读 1

通过目录演示一下加载的优先级,优先级越高的会覆盖低的优先级。
在这里插入图片描述
配置文件加载位置
springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件

file: ./config/

​    file: ./

​        classpath: /config/

​            classpath: /        -->first load ↑(最开始加载,但是会被高优先级覆盖)

优先级由高到底,高优先级的配置会覆盖低优先级的配置(优先级低的先加载)。

互补配置
这四个文件会形成互补文件,并不是说加载高级的就不加载低级的了。

注意:
项目根路径下的配置文件maven编译时不会打包过去,需要修改pom文件,

        <resources>
            <resource>
                <directory>.</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.yaml</include>
                </includes>
            </resource>
        </resources>

还可以通过spring.config.location来改变默认的配置文件位置。
项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用形成互补配置;

java -jar xxx.jar --spring.config.location=配置文件的绝对路径。

1,命令行参数
所有的配置都可以在命令行上进行指定

java -jar xxx.jar --server.port=8087  --server.context-path=/abc
Copy to clipboardErrorCopied

多个配置用空格分开; --配置项=值

2,来自java:comp/env的JNDI属性 ⤴️

3,Java系统属性(System.getProperties()) ⤴️

4,操作系统环境变量 ⤴️

5,RandomValuePropertySource配置的random.*属性值 ⤴️
由jar包外向jar包内进行寻找;

再来加载不带profile
6,jar包外部的application.properties或application.yml(不带spring.profile)配置文件 ⤴️
7,jar包内部的application.properties或application.yml(不带spring.profile)配置文件 ⤴️
优先加载带profile
8,jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件 ⤴️
9,jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件 ⤴️
10,@Configuration注解类上的@PropertySource ⤴️
11,通过SpringApplication.setDefaultProperties指定的默认属性 ⤴️

其实正常情况下好多用不到,官方文档给出了17种,也不会去学每一种
实现方式。这些种方式也是互补配置,相同配置通过一定的优先级控制。。。外部配置加载顺序官方文档

网站文章

  • mysql system_time_zone乱码_解决mysql设置时区时的错误Unknown or incorrect time zone: &#39;Asia/Shanghai&#39;...

    mysql system_time_zone乱码_解决mysql设置时区时的错误Unknown or incorrect time zone: &#39;Asia/Shanghai&#39;...

    Mysql默认时区格式是&#39;+8:00&#39;的格式,这个时区可以在my.ini中[mysqld]节点下设置default-time-zone = &#39;+8:00&#39;默认这个设置是...

    2024-04-01 01:01:19
  • 指针传递和引用传递

    指针传递和引用传递

    指针传递也属于值传递!因为指针本质就是个地址变量,所以指针传递的参数也是个变量!同时需要注意的是,指针传递是把地址变量复制一份再传递给函数的!而引用传递是把本体传递给函数,并没有通过复制!代码:输出结...

    2024-04-01 01:01:06
  • 关于阿里云服务器如何开通弹性公网ip和共享带宽

    关于阿里云服务器如何开通弹性公网ip和共享带宽

    1、绑定或解绑弹性iphttps://help.aliyun.com/document_detail/55784.html您好: 1. 可以升级, 您把固定公网ip转成eip, 在按量付费模式下最高可...

    2024-04-01 01:00:41
  • 铁威马NAS杀毒功能说明

    铁威马NAS杀毒功能说明

    Clam AntiVirus (ClamAV)是 一款免费的,跨平台和开源的杀毒软件,它能侦测到多种恶意软件,包括病毒。1.进入TOS系统;...

    2024-04-01 01:00:37
  • java 8 特性:日期和optional

    背景在java中传统的util.date对象存在各种问题,比如并发容易出问题,功能不全需要手撕等,在java 8中新出了日期的api对这些问题进行了解决,作者在项目中使用到了这些新特性,进行了整理,抛...

    2024-04-01 01:00:30
  • JS逆向解析案例-巨潮证券市场数据库(python)

    JS逆向解析案例-巨潮证券市场数据库(python)

    目标网址:http://webapi.cninfo.com.cn/#/marketDataZhishu解析重点: 目标网址在爬取时必须携带mcode参数,否则会出现无授权访问报错,而mcode刷新频...

    2024-04-01 01:00:05
  • 初识多线程编程

    初识多线程编程

    多线程,线程创建的方式,run方法

    2024-04-01 00:59:58
  • SpringBoot小彩蛋

    SpringBoot小彩蛋

    spingboot小彩蛋

    2024-04-01 00:59:51
  • FTP开发中下载文件的两种方式

    1. 通过 GetFile 方式下载2. 通过 CInternetFile::Read 方式下载两种方式的区别:第一种方式,操作级别较高。直接调用就好,这种方式封装了一切操作。第二种方式,自己可以控制。其基本原理,就是在网络上打开一个文件,就像本地打开文件一样。读取,然后写入到本地文件。以下代码,两种方式都有,第二种方式注释掉了。打开即可使用。在FTP下载中,碰到的奇异问题:下载大于100...

    2024-04-01 00:59:44
  • atoi()函数原型与itoa()函数原型

    1、atoi函数原型: #include using namespace std; int atio1(char *s) { int sign=1,num=0; if(*s==&#39;-&#39;) sign=-1; s++; while((*s)!=&#39;\0&#39;) { num=num*10+(*s-&#39;0&#39;); s++; }

    2024-04-01 00:59:20