Yaml配置入门

2022/8/21 笔记规范

# 简介

配置文件建议使用yaml格式,功能比较强大,且灵活发,目前广泛使用(k8s、springboot)

application.yml: 以yml为后缀的文件为YAML文件。

YAML(YAML Ain`t Markup language)文件,它不是一个标记语言,以前我们的配置文件都是xml、properties, ,但YAML是以数据为中心,更适合做配置文件

# 基本语法

  • 它的基本语法规则如下。

  • 大小写敏感

  • 使用缩进表示层级关系

  • 缩进时不允许使用Tab键,只允许使用空格。

  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

# 例子

Yaml格式配置

# YAML
one:
  two: 2
  three:
    four: 4
    five: 5
1
2
3
4
5
6

以上的内容转成 JSON 后

"one": {
  "two": 2,
  "three": {
    "four": 4,
    "five": 5 
  }
}
1
2
3
4
5
6
7

# 数组语法

fruits:
  - Apple
  - Banana
  - Strawberry
formats: [ YAML, JSON, TOML ]] ]></ac:plain-text-body></ac:structured-macro><p>Json</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="122d0ab2-42e8-4473-a407-e12186621811"><ac:plain-text-body><![CDATA[{
  "fruits": ["Apple","Banana","Strawberry"],
  "formats": [
    "YAML",
    "JSON",
    "TOML"
  ]
}
1
2
3
4
5
6
7
8
9
10
11
12

# 注释

使用“#”单行注释

# 我是注释
# 我也是注释
1
2

# 多行的文字

YAML 提供了两种特殊的语法支持:

lines: |
  我是第一行
  我是第二行
    我是吴彦祖
      我是第四行
  我是第五行

// JSON
"lines": "我是第一行\n我是第二行\n  我是吴彦祖\n     我是第四行\n我是第五行"
1
2
3
4
5
6
7
8
9

使用右尖括号“ > ”来表示该语法,只有空白行才会被识别为换行,原来的换行符都会被转换成空格

lines: >
  我是第一行
  我也是第一行
  我仍是第一行
  我依旧是第一行
  
  我是第二行
  这么巧我也是第二行

// JSON
"lines": "我是第一行 我也是第一行 我仍是第一行 我依旧是第一行\n我是第二行 这么巧我也是第二行"
1
2
3
4
5
6
7
8
9
10
11

# 数据重用与合并

a: &anchor # 设置锚点
  one: 1
  two: 2
  three: 3
b: *anchor # 引用锚点
1
2
3
4
5

对应JSON写法

"a": {
  "one": 1,
  "two": 2,
  "three": 3
},
"b": {
  "one": 1,
  "two": 2,
  "three": 3
}
1
2
3
4
5
6
7
8
9
10

配合**合并标签“<<”**使用可以与任意数据进行合并,你可以把这套操作想象成面向对象语言中的继承

# YAML
human: &base # 添加名为 base 的锚点
    body: 1
    hair: 999
singer:
    <<: *base # 引用 base 锚点,实例化时会自动展开
    skill: sing # 添加额外的属性
programer:
    <<: *base # 引用 base 锚点,实例化时会自动展开
    hair: 6 # 覆写 base 中的属性
    skill: code # 添加额外的属性
1
2
3
4
5
6
7
8
9
10
11

对应JSON写法

"human": { "body": 1, "hair": 999 },
"singer": { "body": 1, "hair": 999, "skill": "sing" },
"programer": { "body": 1, "hair": 6, "skill": "code" }
1
2
3