Yaml配置入门
Hyman 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
2
3
4
5
6
以上的内容转成 JSON 后
"one": {
"two": 2,
"three": {
"four": 4,
"five": 5
}
}
1
2
3
4
5
6
7
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
2
3
4
5
6
7
8
9
10
11
12
# 注释
使用“#”单行注释
# 我是注释
# 我也是注释
1
2
2
# 多行的文字
YAML 提供了两种特殊的语法支持:
lines: |
我是第一行
我是第二行
我是吴彦祖
我是第四行
我是第五行
// JSON
"lines": "我是第一行\n我是第二行\n 我是吴彦祖\n 我是第四行\n我是第五行"
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
使用右尖括号“ > ”来表示该语法,只有空白行才会被识别为换行,原来的换行符都会被转换成空格
lines: >
我是第一行
我也是第一行
我仍是第一行
我依旧是第一行
我是第二行
这么巧我也是第二行
// JSON
"lines": "我是第一行 我也是第一行 我仍是第一行 我依旧是第一行\n我是第二行 这么巧我也是第二行"
1
2
3
4
5
6
7
8
9
10
11
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
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
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
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
2
3