概念:
yaml(YAML Ain’t Markup Language)是一种简洁的非标记语言
以数据为中心 使用空白 缩进 分行组织数据 从而使得属性更加简单易读
比json和xml等更适合作为配置文件
YAML语法规范
我们先来看一看使用小案例:
XML转换为yaml:
8081port>
server>
转化为:
server:
port:8081
properties转换为yaml:
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/piconjo
jdbc.username=root
jdbc.password=123456
转化为:
jdbc:
driverClassName:com.mysql.jdbc.Driver
url:jdbc:mysql://localhost:3306/piconjo
username:root
password:123456
语法:
yaml使用缩进表示层级关系
缩进时不允许使用Tab键 只允许使用空格
且缩进的空格数目并不重要 只要相同层级的元素左侧对齐即可
属性和值对大小写敏感
key:(空格)value 表示一对键值对
注:切记冒号后必须有空格代表属性键值对 否则会识别为一个整体
值的写法
1、字面量:普通的值(数字 字符串 布尔值)
单个的 不可再分的值
字符串默认无须加上单双引号
若加上 则代表特殊意义
"":双引号
不转义字符串里面的特殊字符 将特殊字符作为一个普通的字符串输出
例:"aaa \n bbb"
输出:
aaa \n bbb
’’:单引号
转义特殊字符
例:"aaa \n bbb"
输出:
aaa
bbb
2、对象 Map键值对
key: value 键值对的形式
例:
user:
name:mike
age:19
行内写法:
user: {name: mike,age: 19}
3、数组(List和Set)
一组按次序排列的值
用-短横杠来表示数组中的一个元素
例:
language:
- java
- python
- android
- html
- jquery
行内写法:
language: [java,python,android,html,jquery]
yaml和properties的优先级:
当属性值不同时 会取properties文件和yaml文件的并集
即加起来的属性总和
当属性值相同时 会优先使用properties文件里的属性