简介
说明
YAML 是一种简洁的非标记语言,文件名后缀为.yml,java中经常用它描述配置文件。
YAML以数据为中心,比json/xml等更适合做配置文件。
使用空格进行缩进,分行组织数据,从而使得表示更加简洁易读。
基本规则
- 大小写敏感。
- 使用缩进表示层级关系。只能使用空格进行缩进,禁止使用tab缩进。
- 在SpringBoot中,使用两个空格进行缩进。
- 使用#表示注释。
- 字符串可以不用引号标注。
- 缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。
数据类型
YAML 支持以下几种数据类型:
- 对象:键值对的集合。又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
- 数组:一组按次序排列的值,又称为列表(list)/ 序列(sequence)
- 纯量(scalars):单个的、不可再分的值
格式
纯量
简介
纯量是最基本的,不可再分的值,包括:
- 字符串
- 布尔值
- 整数
- 浮点数
- Null
- 时间
- 日期
示例
key1: true
字符串
字符串可不用加单引号或双引号
str: 这是一行字符串 # 转为json之后:{ "str": "这是一行字符串" }
可使用双引号或者单引号包裹
多行字符串
# 字符串可以拆成多行,换行符会被转化成一个空格 str: 这是一段 多行 字符串 # 转换为 JSON 格式 { "str": "这是一段 多行 字符串" }
# 可使用|保留换行符,也可使用>折叠换行 this: | Foo Bar that: > Foo Bar # 转换后:{ this: 'Foo\nBar\n', that: 'Foo Bar\n' }
单引号和双引号的区别:单引号会对特殊字符转义,双引号不会对特殊字符转义
str1: '这是\n字符串' str2: "这是\n字符串"
转换后的结果
{'str1': '这是\\n字符串', 'str2': '这是\n字符串'}
布尔值
TRUE #true,True都可以
FALSE #false,False都可以
整数型
1234
浮点型
3.14
6.8523015e+5 #可以使用科学计数法
对象
对象键值对:使用冒号结构表示:key: value,冒号后面要加一个空格。
层级关系有如下两种表示方式
写法1:
key: key1: value1 key2: value2
写法2:
key: {key1: value1, key2: value2, ...}
数组
数组/List/Set(用-值表示数组中的一个元素)
:法1
pets: - cat - dog - pig
法2
pets: [cat,dog,pig]
YML支持多维数组
法1:在该项下面缩进一个空格。
- - A - B - C
结果:[[“A”, “B”, “C”]]
法2:行内表示:
key: [value1, value2, ...]
引用(yml原生支持)
说明
锚点 & 和别名 *,可以用来引用。
- &:用来建立锚点(defaults_tag),锚点标记后面数据为引用数据
- <<:表示合并到当前数据,
- * :用来引用锚点。
示例
name: &a yaml book: *a books: - java - *a - python # 相当于 name: yaml book: yaml books: - java - yaml - python
引用(application.yml)
SpringBoot的application.yml或者application.properties使用${}进行引用,例如:
spring: application: name: order dubbo: application: name: ${spring.application.name} #服务名称
高级
分段
多个文档在一个yml文件,使用 — 分隔方式来分段。
spring: profiles: #激活开发环境 active: dev --- #开发环境配置 spring: profiles: dev server: port: 8080 --- #生产环境配置 spring: profiles: prod server: port: 8082
请先
!