1、基本语法
key: value value和:之间有一个空格
大小写敏感:区分大小写
使用缩进表示层级关系
缩进不允许使用Tab,只允许使用空格。在Idea中可以使用Tab
缩进的空格数不重要,只要相同的层级的元素左对齐即可
例如我在yaml配置一个兴趣,不管前面有多少个空格,只要左对齐了,这三个兴趣都是一个层级的
interests:
- 尤克里里
- 篮球
- 石原里美
‘#’表示注释
''和""表示字符串内容,会转义/不会转义。例如名字"Zhangsan \n 李四",单引号会原封不动的输出,但是双引号会将\n变成换行符输出
2、数据类型
字面量:单个的、不可分的值。如Date、Boolean、String、Number、Null
对象:键值对的集合 map hash set object,例如宠物类(k),宠物有姓名(k1),体重(k2)。
数组:一组按次序排列的值 array,list,queue
3、示例
package com.you.boot.bean;
import lombok.Data;
import lombok.ToString;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
@Data
@ToString
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String userName;
private Boolean boss;
private Date birth;
private Integer age;
private Pet pet;
private String[] interests;
private List<String> animal;
private Map<String,Object>score;
private Set<Double> salarys;
private Map<String,List<Pet>>allPets;
}
import lombok.Data;
import lombok.ToString;
@Data
@ToString
public class Pet {
private String name;
private Double weight;
}
application.yaml,以后忘了写法,看这个
person:
userName: Zhangsan
双引号会转义一些特殊字符
单引号不会转义一些特殊字符 如/n
boss: true
birth: 2022/7/1
age: 1
interests: [尤克里里,吉他]
interests:
- 尤克里里
- 篮球
- 石原里美
animal: [旺财,小猪]
score:
english: 80
math: 90
score: {english: 80,math: 90}
salarys: [1200.00,12000.00,9999.00]
pet:
name: 小猪
weight: 99.99
allPets:
sick:
- {name: 小猪,weight: 99.99}
- name: 小鸡
weight: 88.88
- name: 阿猫
weight: 70.00
health:
- {name: 阿花,weight: 20.00}
- {name: 阿叶,weight: 30.00}
4、自定义类绑定的配置提示
自己写的一些变量,在yaml编写的时候没有提示。
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
导入依赖后,重启一下项目,自己定义的变量就有提示了
我们写的是userName,提示给的是user-name 也是可以的。
因为这一块只是方便我们编程,打包的时候没有用,所以我们加上这一段代码,让项目打包的时候不打包这个处理器
<excludes>
<exclude>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configurationprocessor</artifactId>
</exclude>
</excludes>
【继续努力~~~】