admin 管理员组

文章数量: 886992

Spring Boot yaml格式及优先级

yaml

基本语法

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进不允许使用tab,只允许空格
  • 缩进的空格数不重要,只要相同层级的元素左对齐即可
  • '#'表示注释

数据类型

YAML 支持以下几种数据类型:

  • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
  • 纯量(scalars):单个的、不可再分的值

示例

server:port: 8088#对象
dog1:name: 大狗age: 18#数组
key1: [value1, value2]key2:- value3- value4dog2:-name: 大狗age: 18-name: 小狗age: 19dog3: [{name: 大狗,age: 18},{name: 小狗,age: 17}]


读取配置信息

相同目录配置文件加载顺序

  • 相同application文件时顺序在父项目(spring-boot-starter-parent)中有所体现:
        <resources><resource><filtering>true</filtering><directory>${basedir}/src/main/resources</directory><includes><include>**/application*.yml</include><include>**/application*.yaml</include><include>**/application*.properties</include></includes></resource><resource><directory>${basedir}/src/main/resources</directory><excludes><exclude>**/application*.yml</exclude><exclude>**/application*.yaml</exclude><exclude>**/application*.properties</exclude></excludes></resource></resources>
  • application.yml 和bootStrap.yml 在同一目录下,则bootStrap.yml 的加载顺序要高于application.yml,即bootStrap.yml  会优先被加载。
  • bootstrap.yml 用于应用程序上下文的引导阶段,bootstrap.yml 由父Spring ApplicationContext加载。
  • bootstrap.yml 可以理解成系统级别的一些参数配置,这些参数一般是不会变动的。
  • application.yml 可以用来定义应用级别的,如果搭配 spring-cloud-config 使用。
  • application.yml 里面定义的文件可以实现动态替换

不同目录配置文件加载顺序按照优先级从低到高的顺序

  1. classes根目录下面的配置
  2. classes根目录下 的config文件夹下的配置
  3. jar包根目录配置
  4. jar包根目录下 的config文件夹下的配置
  5. 命令行执行

resources下的配置文件编译后会放在classes根目录下

java -jar springboot-c-0.0.1-SNAPSHOT.jar 读取配置时顺序(此时不会识别jar包根目录配置)

  1. profiel文件(2--3--4--5--6)                          yml--yaml--properties
  2. jar包同级目录./config                                     yml--yaml--properties
  3. jar包同级目录./config/*/                                  yml--yaml--properties
  4. jar包同级目录                                                 yml--yaml--properties
  5. classes根目录下 的config文件夹下的配置     yml--yaml--properties
  6. classes根目录下面的配置                              yml--yaml--properties

java -jar springboot-c-0.0.1-SNAPSHOT.jar --spring.profiles.active= uat 读取配置时顺序(此时不会识别jar包根目录配置)

  1. profiel文件(2--3--4--5--6)                          yml--yaml--properties
  2. jar包同级目录./config                                     yml--yaml--properties
  3. jar包同级目录./config/*/                                  yml--yaml--properties
  4. jar包同级目录                                                 yml--yaml--properties
  5. classes根目录下 的config文件夹下的配置     yml--yaml--properties
  6. classes根目录下面的配置                              yml--yaml--properties

java -jar springboot-c-0.0.1-SNAPSHOT.jar --spring.config.location=D:\Thing\application-uats.yaml读取的优先级最高

本文标签: Spring Boot yaml格式及优先级