YAML配置文件

SpringBoot支持集中化管理配置, 可以在一个application.properties配置,配置多以后难阅读和修改,层级结构辨识度不高, SpringBoot同时支持yml格式文件配置。

1. YAML概述

YAML是 "YAML Ain't a Markup Language"(YAML不是一种标记语言)。在开发的这种语言时,YAML的意思其实是:"Yet Another Markup Language"(是另一种标记语言)。

  • 设计目标,就是方便人类读写
  • 层次分明,更适合做配置文件
  • 使用.yaml或.yml作为文件后缀

2. 基本语法

  • 大小写敏感
  • 使用缩进表示层级关系,k: v,使用空格分割k,v
  • 缩进时不允许使用Tab键,只允许使用空格换行
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • #表示注释,从这个字符一直到行尾,都会被解析器忽略。
  • 支持的数据结构:字符串、数字、bool、日期,数组,对象
    比如:
yml
person:

  name: 张三

  age: 18

  birthDay: 2010/10/10 12:12:12

  like: true

  child:

    name: 李四

    age: 20

    birthDay: 2018/10/10

    text: ["abc","def"]

  dogs:

    - name: 小黑

      age: 3

    - name: 小白

      age: 2

  cats:

    c1:

      name: 小蓝

      age: 3

    c2: {name: 小绿,age: 2} #对象也可用{}表示
ini
person.name=张三

person.age=18

person.birthDay=2010/10/12 12:12:12

person.like=true

person.child.name=李四

person.child.age=12

person.child.birthDay=2018/10/12

person.child.text[0]=abc

person.child.text[1]=def

person.dogs[0].name=小黑

person.dogs[0].age=3

person.dogs[1].name=小白

person.dogs[1].age=2

person.cats.c1.name=小蓝

person.cats.c1.age=3

person.cats.c2.name=小灰

person.cats.c2.age=2
java
public class Person {

    private String name;

    private Integer age;

    private Date birthDay;

    private Boolean like;

    private Child child; //嵌套对象

    private List<Dog> dogs; //数组(里面是对象)

    private Map<String,Cat> cats; //表示Map

}



@Data

public class Dog {

    private String name;

    private Integer age;

}



@Data

public class Child {

    private String name;

    private Integer age;

    private Date birthDay;

    private List<String> text; //数组

}



@Data

public class Cat {

    private String name;

    private Integer age;

}

细节注意

birthDay 推荐写为 birth-day

  1. 文本:
    • 单引号不会转义【\n 则为普通字符串显示】
    • 双引号会转义【\n会显示为换行符】
  2. 大文本
    • |开头,大文本写在下层,保留文本格式,换行符正确显示
    • >开头,大文本写在下层,折叠换行符
  3. 多文档合并
    • 使用---可以把多个yaml文档合并在一个文档中,每个文档区依然认为内容独立

评论