在学习 Spring Boot 时,它支持 properties 和 yml 两种类型的配置文件。前者就是 java 中的属性文件,即 KV 值,这里就不再赘述;本文主要介绍另一种配置文件 yml,即 YAML 文件。
YAML 全称为“Yet Another Markup Language”(发音 /ˈjæməl/ )。它是一种基于 Unicode 容易阅读,容易和脚本语言交互的,用来表达资料序列的编程语言。
脚本语言:由于实现简单,解析成本很低,YAML 特别适合在脚本语言中使用。
序列化: YAML是由宿主语言数据类型直转的比较适合做序列化。
配置文件:写 YAML 要比写 XML 快得多(无需关注标签或引号),并且比 INI 文档功能更强。由于兼容性问题,不同语言间的数据流转建议不要用 YAML。
YAML易于人们阅读。
YAML数据在编程语言之间是可移植的。
YAML匹配敏捷语言的本机数据结构。
YAML具有一致的模型来支持通用工具。
YAML支持单程处理。
YAML具有表现力和可扩展性。
YAML易于实现和使用。
(1)基础语法规则:
大小写敏感
使用缩进表示层级关系
缩进时不允许使用Tab键,只允许使用空格
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
(2)行开头使用‘#’表示注释,YAML 只能单行注释,从‘#’开始处到行尾,例如:
# 这是一行注释
(3)YAML 支持的数据结构有三种,如下:
对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
纯量(scalars):单个的、不可再分的值
(4)对象
对象是一组键值对,使用冒号结构表示。如下:
Yaml 也允许另一种写法,将所有键值对写成一个行内对象。如下:
(5)数组
数组由一组连词线(“-”)开头的行,构成一个数组。如下:
如果数据结构的子成员也是一个数组,则可以在该项下面缩进一个空格。如下:
数组也可以采用行内表示法。如下:
(6)复合结构
对象和数组可以结合使用,形成复合结构。如下:
(6)纯量
纯量是最基本的、不可再分的值。以下数据类型都属于 JavaScript 的纯量。
字符串
布尔值
整数
浮点数
Null
时间
日期
实例如下:
(7)字符串
字符串是最常见,也是最复杂的一种数据类型。字符串默认不使用引号表示。如下:
(8)引用
锚点(&)和别名(*),可以用来引用。如下:
&用来建立锚点(defaults),<<表示合并到当前数据,*用来引用锚点。下面是另一个例子:
更多关于 YAML 文档的知识,请参考官方手册 https://yaml.org/spec/1.2/spec.html