一、YAML概述
YAML全称是 YAML Ain't Markup Language 。YAML是一种直观的能够被电脑识别的的数据数据序列化 格式, 并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,比如:C/C++, Ruby, Python, Java, Perl, C#, PHP等。
YML文件是以数据为核心的,比传统的xml方式更加简洁。YAML文件的扩展名可以使用.yml或者.yaml。
二、格式对比
properties:
server.port=8080
server.address=127.0.0.1
xml:
<server>
<port>8080</port>
<address>127.0.0.1</address>
</server>
yml:
server:
port: 8080
address: 127.0.0.1
三、YAML基础语法
- 1. 大小写敏感
- 2. 数据值前边必须有空格,作为分隔符
- 3. 使用缩进表示层级关系
- 4. 缩进时不允许使用Tab键,只允许使用空格(各个系统 Tab对应的 空格数目可能不同,导致层次混 乱)。
- 5. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
- 6. "#"表示注释,从这个字符一直到行尾,都会被解析器忽略。
可设置的类型:
1、字面量:
普通的值 [ 数字,布尔值,字符串 ]
boolean: TRUE #TRUE,true,True,FALSE,false,False均可
float: 3.14 #6.8523015e+5 #支持科学计数法
int: 123 #0b1010_0111_0100_1010_1110 #支持二进制、八进制、十六进制
string: HelloWorld #字符串可以直接书写
2、数组:
一组按次序排列的值( List、set )
address:
- beijing
- shanghai
# 行内写法
commpany: [阿里巴巴,华为,腾讯,字节跳动]
3、对象、Map(键值对)
person:
name: wangzhuo
# 行内写法
person: {name: wangzhuo}
#对象数组格式一
users:
- name: Tom
age: 4
- name: Jerry
age: 5
#对象数组格式二
users:
-
name: Tom
age: 4
-
name: Jerry
age: 5
#对象数组缩略格式
users2: [ { name:Tom,age:4 },{ name:Jerry,age:5 } ]
4、参数的引用
name: wangzhuo
person:
name: xuelaoshi
pet: ${name} # 引用上边定义的name值
name: xuls${random.uuid} # 配置文件占位符,随机uuid
name: ${person.name}_真帅
5、在springboot框架中的作用
SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者application.yml(application.yaml)进行配置。
application.properties 语法结构 :key=value
application.yml 语法结构 :key:空格 value (冒号后面必须要有空格)
注意:在同一级目录入如果三类文件共存,优先级为:properties > yml > yaml