10 Yaml语法

10.1 语法规定

  1. 核心写法

整个yaml文件节点可以想象成是一个model对应的。
JavaWebComplex - 图1
key: value键值对。Key/value之间要有空格,key不能使用汉字,可以使用纯英文或数字。value值有三大数据格式(Map/Bean对象、Array数组、字面量)。

  1. 其他写法

大小写敏感。
使用缩进表示层级关系,缩进时不允许使用Tab键,只允许使用空格,缩进的空格数目不重要,只要相同层级的元素左侧对齐即可。
#表示注释,从这个字符一直到行尾,都会被解析器忽略。
字符串无需加引号,如果要加,’’与””表示字符串内容会被转义/不转义。

10.2 value支持的数据格式

  1. 对象:键值对的集合。map/object、hash、set

行内写法: k: {k1:v1,k2:v2,k3:v3}
#或
k:
k1: v1
k2: v2
k3: v3

  1. 数组:一组按次序排列的值。array/list、queue

行内写法: k: [v1,v2,v3]
#或者
k:
- v1
- v2
- v3

  1. 纯量(字面量)

字面量:单个的、不可再分的值。date、boolean、string、number、null
如:age: 21

10.3 实例

如下一个Bean类
@Component
@Data
@ConfigurationProperties(prefix = “fly”)public class Fly {
private String name;
private Integer age;
private Boolean boss;
private Date birth;
private Children coco;
private String[] interests;
private List animal;
private Map score1;
private Map score2;
private Set salarys;
private Map> friends;}
对应的yaml语法
fly:
name: efly
age: 30
boos: false
birth: 2000/01/01 20:12:33
# 对象的常规写法 coco:
age: 1
name: eflycoco
# 数组的行内写法 interests: [游泳,画画,唱歌]
# 数组的行内写法 animal:
- 马
- 骆驼 # score: {数学: 128,语文: 99}
_salarys:
- 18000
- 20000
score1: {english: 128,math: 99}
score2:
geometry: 141
music: [121,123,125]
# 集合的写法_ friends:
em : [{age: 31,name: en},{age: 32,name: en2}]
zz :
- {age: 45, name: tom}
- {age: 35, name: jerry}

10.4 开启自动提示

  1. Pom.xml文件依赖加入spring-boot-configuration-processor

org.springframework.boot
spring-boot-configuration-processor
true
  1. 将其排除在build外

如果不加如下代码,package出的war包里面有
spring-boot-configuration-processor-2.3.4.RELEASE.jar
JavaWebComplex - 图2
加入元素后,执行maven package命令后



org.springframework.boot
spring-boot-maven-plugin



org.springframework.boot
spring-boot-configuration-processor





war包里面找不到指定jar包了
JavaWebComplex - 图3