1、简介
- yaml(YAML Ain't Markup Language)是一种数据序列化格式,它使用空格、换行和简单的标记来表示数据结构,易于阅读和编写。
- yaml文件的扩展名通常为
.yml
或.yaml
。 - 它比传统的xml和json配置文件更加简洁、易读,并且在Spring Boot中得到了广泛支持。
- 在yaml文件中,缩进非常重要,必须保持一致,并且不能使用Tab键进行缩进。
- 字符串值通常不需要引号,但如果值中包含特殊字符或需要保留格式,则可以使用单引号或双引号。
- 布尔值可以使用
true
或false
表示。 - 数字不需要特殊格式,但长整型和浮点型不需要添加额外的后缀(如
L
或F
)。 - yaml文件还支持注释,以
#
开头的行将被视为注释。
2、语法特点
- 基本结构:yaml文件通过缩进来表示数据的层级结构,只要左边对齐就表示同一层级。
- 键值对:使用冒号(:)分隔键和值,冒号后必须有一个空格。
- 数组(List、Set):使用短横线(-)作为列表项的前缀,后面跟值,每个值占一行。
- 对象(Map):使用冒号分隔键和值,可以在新的一行缩进表示对象的属性,也可以使用行内表示法(如
{key: value}
)。 - 数据类型:yaml支持多种数据类型,包括字符串、数字、布尔值、null、日期和时间等。
3、基本应用
3.1 yaml配置纯量(Scalars)
- yaml中的纯量表示单个的、不可再分的值,如字符串、整数、浮点数、布尔值、null等。
- 纯量不需要特殊的符号来包围,直接写值即可。
- 示例:
# 字符串
name: John Doe
# 整数
age: 30
# 浮点数
height: 1.75
# 布尔值
isActive: true
# null值
nullValue: null
# 等同于JSON格式
# {
# "name": "John Doe",
# "age": 30,
# "height": 1.75,
# "isActive": true,
# "nullValue": null
# }
3.2 yaml配置数组(Array)
- yaml中的数组表示为一组按照顺序排列的值,也称为序列(sequence)或列表(list)。
- 数组由中括号
[]
包围,并使用短横线-
作为列表项的前缀。 - 示例:
# 使用中括号和短横线表示
hobbies:
- reading
- coding
- traveling
# 等同于JSON格式
# {
# "hobbies": ["reading", "coding", "traveling"]
# }
3.3 yaml配置对象(Object)
- yaml中的对象表示为一个键值对的集合,也称为映射(mapping)、哈希(hashes)或字典(dictionary)。
- 对象由一对大括号
{}
包围,或者通过缩进来表示。 - 示例:
# 使用大括号表示
person:
name: John Doe
age: 30
city: New York
# 或者使用缩进来表示,不使用大括号
person:
name: John Doe
age: 30
city: New York
# 等同于JSON格式
# {
# "person": {
# "name": "John Doe",
# "age": 30,
# "city": "New York"
# }
# }