YAML
1. 概述
YAML是 "YAML Ain't a Markup Language" (YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。
这种语言以数据作为中心,而不是以标记语言为重点!
YAML比较简单,开发中较常使用,也是SpringBoot官方推荐的。
传统xml配置:
<server> <port>8080<port> </server>
yaml配置:
server: prot: 8080
2. 基础语法
说明:语法要求严格!
- 空格不能省略
- 以缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的。
- 属性和值的大小写都是十分敏感的。
字面量:普通的值 [ 数字,布尔值,字符串 ]
字面量直接写在后面就可以 , 字符串默认不用加上双引号或者单引号;
k: v
注意:
""双引号,不会转义字符串里面的特殊字符 , 特殊字符会作为本身想表示的意思;
比如 :name: "kuang \n shen" 输出 :kuang 换行 shen
' '单引号,会转义特殊字符 , 特殊字符最终会变成和普通字符一样输出
比如 :name: ‘kuang \n shen’ 输出 :kuang \n shen
对象、Map(键值对)
#对象、Map格式
k:
v1:
v2:
student:
name: zhangsan
age: 3
也可以写成
student: {name: zhangsan, age: 3}
数组( List、set )
用 - 值表示数组中的一个元素,比如:
pets:
- cat
- dog
- pig
行内写法
pets: [cat,dog,pig]
3. 配置文件占位符
yaml可以在value后面生成占位符,功能相比properties强大。
# 生成随机的uuid
${random.uuid}
# 生成随机的int值
${random.int}
# 如果person对象的val值存在,则此占位符值就为val值,或者就是: 后面所给的值
${person.val:hello}
4. 和Properties的对比
详见SpringBoot--->Configuration