SpringBoot提供了外部分配置功能,可以使用属性文件(properties)、YAML(yml)文件、环境变量和命令行参数来进行处部参数配置,并t以特定的顺序来处理配置,以便于允许合理的覆盖值。

本章节中,主要解析SpringBoot对属性文件(properties)和YAML(yml)文件的加载顺序和属性优化级

Note: SpringBoot中的配置加载顺序与其属性优先级是相反的,每多时候,我们说的加载顺序,不是属性优先级。超先加载的配置文件则属性优先级越低。

我们需要先带着这种思路来进行下面的阅读。

配置文件目录与属性优化级

1. A /config subdirectory of the current directory.

位于与jar包同级目录下的config文件夹,也就是当前目录下的/config子文件夹下配置

2. The current directory

位于与jar包同级目录下(jar包当前目录)

3. A classpath /config package

classpath下的config目录,如idea环境下,resource文件夹下的config文件夹,编译之后就是classpath下的config文件夹下配置

4. The classpath root

classpath根目录,如idea环境下,resource文件夹下配置

上文所标识的顺序中,表示的是属性的优化先级。也就是说,加载的顺序与其相反,从4开始加载。

如图所示中的序列,表示的是配置文件的加载序顺。加载顺序正好与可放置目录中的序顺相反。

加载1. classpath:/ -- 优先级4. The classpath root

加载2. classpath:/config/ -- 优先级3. A classpath /config package

加载3. file:./ -- 优先级2. The current directory

加载4. file:./config/ -- 优先级1. A /config subdirectory of the current directory.

application与bootstrap

bootstrap优先于application加载, 用于应用程序上下文的引导阶段。由spring cloud BootstrapApplicationListenerApplicationEnvironmentPreparedEvent时进行加载。

可以将bootstrap配置理解为系统级别的参数配置,这些参数一般不会变更。

application配置可以理解为定义应用级别的参数,可以覆盖替换bootstrap的配置信息。

也就是说application的属性优先较高,加载时先加载bootstrap配置文件,再加载application配置文件。

properties与yml

properties的配置文件属性优先高于yml配置,yml配置文件优先于propertes配置文件加载

springboot配置文件加载顺序_「SpringBoot系列」配置文件加载优先级解析相关推荐

  1. java8 lambda maplist排序_「java8系列」流式编程Stream

    前言 「Java8系列」神秘的Lambda 「Java8系列」神奇的函数式接口 继上两篇之后,本文已经java8系列的第三篇了.本篇文章比较长,但我希望大家都能认真读完.读不完可以先收藏,在找时间读. ...

  2. java8堆内存模型_「GC系列」JVM堆内存分代模型及常见的垃圾回收器

    1. 内存分代模型 为什么要说JVM的内存分代模型呢,因为内存分代和垃圾回收器的运行是有关系的. 现在大部分用到的垃圾回收器在逻辑上是分代的,除了G1之外的其他垃圾回收器在逻辑上和物理上都是分代的. ...

  3. java list打乱顺序_「collections.shuffle」Collections.shuffle()打乱List - seo实验室

    collections.shuffle java.util.Collections类下有一个静态的shuffle()方法,如下: 1)static void shuffle(List> list ...

  4. golang 接口_「Golang系列」 深入理解Golang Empty Interface (空接口)

    空接口可用于保存任何数据,它可以是一个有用的参数,因为它可以使用任何类型. 要理解空接口如何工作以及如何保存任何类型,我们首先应该理解名称背后的概念. 接口 这是Jordan Oreilli对空接口的 ...

  5. mongdb 建立了索引唯一性还能重复插入?_「数据库系列」Postgres性能调优——Index...

    在本文中,我们将探讨如何通过使用Explain和Analyze来分析慢查询,以及使用索引来修改和增强查询时间来解决慢查询. Postgres支持在表上使用各种索引,以加快查询速度. 多列索引 多列B树 ...

  6. flask中文文档_「Flask系列」 初识Flask

    引子 作者有多年的编程打杂经验,之前一直参与基于Java的各种项目以及产品规划与设计,后因自己创业维持一家小公司,有些项目与产品,想降低开发成本,故在公司内部推行基于Python Flask的后端开发 ...

  7. java 常用 函数式接口_「java8系列」神奇的函数式接口

    前言 在上一篇Lambda的讲解中我们就提到过函数式接口,比如:Consumer consumer = (s) -> System.out.println(s);其中Consumer就是一个函数 ...

  8. arcpy实现空间查询_「实战系列」GP+Roaringbitmap,亿级会员十万级标签毫秒级查询...

    在大数据处理和应用场景中经常需要从亿级甚至十亿级会员中搜索出符合特定标签的会员.很多企业都会使用 HBase 或者 Hive + Hadoop 的方式,这样的方式查询效率非常慢,在标签非常多的情况下计 ...

  9. mysql显示表已存在_「Docker系列」 如何在Docker中部署MySQL数据库?

    Docker为部署和测试应用程序和数据库提供了许多优势,这些应用程序和数据库是应用程序不可或缺的一部分,因此很值得学习如何在Docker容器中部署和运行数据库. 本文中,我们会重点关注如下重点: 为M ...

最新文章

  1. 南京人工智能高等研究院孔慧:多向技术驱动,让企业具备长久竞争力
  2. Spring Aop实例之AspectJ注解配置
  3. hive桌游中文规则_超火爆轻策桌游《小小城镇》新扩展——小金币大作为,邀你共筑繁荣小镇!...
  4. TypeScript学习(七):类型断言
  5. apache ii评分和死亡率_危重病人APACHE II评分表
  6. UNIX环境高级编程-#include “apue.h“
  7. CentOS修改SSH端口号
  8. unity三维地球实现方法
  9. VMware搭建KMS服务器(VLMCSD)
  10. 【NiosII训练】第二篇、FPGA驱动AD9854高级篇
  11. 斐讯天天链N1:分布式数据存储模式能否引领下一代数据中心变革
  12. Python OS模块详解(完善版本)
  13. Mybatis中 if 语句使用空格问题
  14. 单片机做计算机乘法,基于单片机实现的四则运算计算器.DOC
  15. Ubuntu16.04下firefox flash过期问题
  16. input禁止自动填充
  17. java日语_java中常用日语词汇整理
  18. 安卓转移到IOS,传输错误问题
  19. 2020-Android-大厂面试(五)插件化、模块化,不同层级的Android开发者的不同行为
  20. biee java_转:BIEE11g 集成开源CAS实现SSO

热门文章

  1. 调研《构建之法》指导下的优秀实践作品三篇
  2. strcore.cpp(156) 内存泄漏
  3. Android开发环境搭建之Eclipse/AndroidStudio
  4. PostgreSQL高可用性、负载均衡、复制与集群方案介绍
  5. 【SICP练习】102 练习2.79-2.80
  6. 整理下开发中常用的第三方库
  7. 跟我一起学Angular2(1)-了解ng模块化
  8. JAVA 面向对象的一些基础理解
  9. hdu 2594(kmp)
  10. SQL Server 日期转换格式