采用键值对的方法存储值
key: value
冒号后面要有空格
name: 张三
标量
标量是最基础的数据类型,不可再分的值,他们一般用于表示单个的变量,有以下七种:
- 字符串
- 布尔值
- 整数
- 浮点数
- Null
- 时间
- 日期
# 字符串
string.value: Hello!我是陈皮!
# 布尔值,true或false
boolean.value: true
boolean.value1: false
# 整数
int.value: 10
int.value1: 0b1010_0111_0100_1010_1110 # 二进制
# 浮点数
float.value: 3.14159
float.value1: 314159e-5 # 科学计数法
# Null,~代表null
null.value: ~
# 时间,时间使用ISO 8601格式,时间和日期之间使用T连接,最后使用+代表时区
datetime.value: !!timestamp 2021-04-13T10:31:00+08:00
# 日期,日期必须使用ISO 8601格式,即yyyy-MM-dd
date.value: !!timestamp 2021-04-13
对象
我们知道单个变量可以用键值对,使用冒号结构表示 key: value,注意冒号后面要加一个空格。可以使用缩进层级的键值对表示一个对象,如下所示:
当然也可以使用person:
name: 陈皮
age: 18
man: true
key:{key1: value1, key2: value2, ...}
的形式,如下:person: {name: 陈皮, age: 18, man: true}
数组
可以用短横杆加空格 -开头的行组成数组的每一个元素,如下的address字段:
如果数组字段的成员也是一个数组,即二维数组,可以使用嵌套的形式,如下:person:
name: 陈皮
age: 18
man: true
address:
- 深圳
- 北京
- 广州
# 或者使用如下形式
address: [深圳,北京,广州]
如果数组成员是一个对象,则用如下两种形式形式: ```yaml childs: - name: 小红 age: 10 - name: 小王 age: 15person:
name: 陈皮
age: 18
man: true
address: [深圳, 北京, 广州]
twoArr:
-
- 2
- 3
- 1
-
- 10
- 12
- 30
或者使用如下形式
childs: [{name: 小红, age: 10}, {name: 小王, age: 15}]
<a name="fca196e0"></a>
## 文本块
如果你想引入多行的文本块,可以使用**|**符号
```yaml
person:
name: |
Hello Java!!
I am fine!
Thanks! GoodBye!
和双引号效果一致
显示指定类型
有时我们需要显示指定某些值的类型,可以使用 !(感叹号)显式指定类型。!单叹号通常是自定义类型,!!双叹号是内置类型,例如:
# 指定为字符串
string.value: !!str HelloWorld!
# !!timestamp指定为日期时间类型
datetime.value: !!timestamp 2021-04-13T02:31:00+08:00
内置的类型如下:
- !!int:整数类型
- !!float:浮点类型
- !!bool:布尔类型
- !!str:字符串类型
- !!binary:二进制类型
- !!timestamp:日期时间类型
- !!null:空值
- !!set:集合类型
- !!omap,!!pairs:键值列表或对象列表
- !!seq:序列
- !!map:散列表类型
引用
引用会用到 &锚点符合和 星号符号,&用来建立锚点,<< 表示合并到当前数据, 用来引用锚点。 ```yaml xiaohong: &xiaohong name: 小红 age: 20
dept: id: D15D8E4F6D68A4E88E <<: *xiaohong
最终显示效果为:
```yaml
xiaohong:
name: 小红
age: 20
dept:
id: D15D8E4F6D68A4E88E
name: 小红
age: 20
还有一种文件内引用,引用已经定义好的变量,如下:
base.host: https://chenpi.com
add.person.url: ${base.host}/person/add
单文件多配置
可以在同一个文件中,实现多文档分区,即多配置。在一个yml文件中,通过 — 分隔多个不同配置,根据spring.profiles.active 的值来决定启用哪个配置(但是一般情况下使用多文件,根据文件名称application-dev.yml,进行划分)
#公共配置
spring:
profiles:
active: pro # 指定使用哪个文档块
---
#开发环境配置
spring:
profiles: dev # profiles属性代表配置的名称
server:
port: 8080
---
#生产环境配置
spring:
profiles: pro
server:
port: 8081