SpringBoot 配置文件加载位置与优先级问题详解

 更新时间:2021年09月14日 10:37:30   作者:流烟默  
这篇文章主要介绍了SpringBoot 配置文件加载位置与优先级问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

【1】项目内部配置文件

spring boot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件

–file:./config/
–file:./
–classpath:/config/
–classpath:/

即如下图所示:

这里写图片描述

以上是按照优先级从高到低(1-4)的顺序,所有位置的文件都会被加载,高优先级配置内容会覆盖低优先级配置内容。

SpringBoot会从这四个位置全部加载主配置文件,如果高优先级中配置文件属性与低优先级配置文件不冲突的属性,则会共同存在—互补配置。

我们也可以通过配置spring.config.location来改变默认配置。

java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=D:/application.properties

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

【2】外部配置加载顺序

SpringBoot也可以从以下位置加载配置:

  • 优先级从高到低;
  • 高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置。

1.命令行参数

所有的配置都可以在命令行上进行指定;多个配置用空格分开; --配置项=值

java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar 
--server.port=8087 --server.context-path=/abc

2.来自java:comp/env的JNDI属性
3.Java系统属性(System.getProperties())
4.操作系统环境变量
5.RandomValuePropertySource配置的random.*属性值
6.jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
7.jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
8.jar包外部的application.properties或application.yml(不带spring.profile)配置文件
9.jar包内部的application.properties或application.yml(不带spring.profile)配置文件

由jar包外向jar包内进行寻找,优先加载带profile的,再加载不带profile的。

10.@Configuration注解类上的@PropertySource
11.通过SpringApplication.setDefaultProperties指定的默认属性

参考官网地址官网图示如下:

这里写图片描述

到此这篇关于SpringBoot 配置文件加载位置与优先级的文章就介绍到这了,更多相关SpringBoot 配置文件加载优先级内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java实战之客户信息管理系统

    Java实战之客户信息管理系统

    这篇文章主要介绍了Java实战之客户信息管理系统,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • 23种设计模式(7) java代理模式

    23种设计模式(7) java代理模式

    这篇文章主要为大家详细介绍了23种设计模式之java代理模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • java删除文件夹下所有文件示例分享

    java删除文件夹下所有文件示例分享

    这篇文章主要介绍了java删除文件夹下所有文件示例,需要的朋友可以参考下
    2014-02-02
  • SpringBoot thymeleaf eclipse热部署方案操作步骤

    SpringBoot thymeleaf eclipse热部署方案操作步骤

    今天小编就为大家分享一篇关于SpringBoot thymeleaf eclipse热部署方案操作步骤,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Servlet实现简单的用户登录功能实例代码

    Servlet实现简单的用户登录功能实例代码

    这篇文章主要给大家介绍了关于利用Servlet实现简单的用户登录功能的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • JAVA中字符串函数subString的用法小结

    JAVA中字符串函数subString的用法小结

    本篇文章主要是对JAVA中字符串函数subString的用法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02
  • JAVA 继承基本类、抽象类、接口介绍

    JAVA 继承基本类、抽象类、接口介绍

    Java是一个面向对象的语言,java面向对象一般有三大特征:封装、继承、多态
    2013-01-01
  • Sentinel自定义异常的三种实现方式

    Sentinel自定义异常的三种实现方式

    Spring Cloud Alibaba Sentinel 是目前主流并开源的流量控制和系统保护组件,Spring Cloud Alibaba Sentinel 有 3 种自定义异常的实现方式,本文小编将通过代码示例给大家详细的介绍这三种实现方式,需要的朋友可以参考下
    2023-11-11
  • spring-data-redis 动态切换数据源的方法

    spring-data-redis 动态切换数据源的方法

    最近遇到了一个麻烦的需求,我们需要一个微服务应用同时访问两个不同的 Redis 集群,一般情况下我们会怎么处理呢,下面通过场景分析给大家介绍spring-data-redis 动态切换数据源的方法,感兴趣的朋友一起看看吧
    2021-08-08
  • 使用jdk1.8实现将list根据指定的值去分组的操作

    使用jdk1.8实现将list根据指定的值去分组的操作

    这篇文章主要介绍了使用jdk1.8实现将list根据指定的值去分组的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10

最新评论