Yaml文件:

定义:

Yaml文件是用Yaml语言写的文件,Yaml语言是一种可读性高,更注重数据表达,可扩展的一种数据标记语言。Yaml文件以.yaml或者.yml为后缀,例如application.yml、application.yaml都可以。非常适用于作为配置文件使用。Spring Boot就是可以用application.yml作为配置文件。

基本语法:
  1. k:(空格)v,表示一对键值对,空格必须要有。
  2. 用空格缩进表示层级关系,相同的缩进(左对齐)的表示同一层级。
  3. 属性(键)和值都是大小写敏感的。
  4. 用#号进行注释。

比如spring boot的配置:

server:
	port: 8088
	#path: /hello-world  #号进行注释
	#port配置和path配置属于同一层级,server配置是他们的上层。
值的写法:
字面量的写法:

字面量指得是普通的值,例如数字,字符串,布尔值,日期等

  1. 写法:k: v ,字面量直接来写。
person:
	age: 23  #直接写数字23
	name: Michael Jordan  #直接写字符串
	flag: false  #写布尔值。
  1. 字符串默认不用加上单引号或者双引号。
    双引号"",不会对特殊字符串进行转义,特殊字符串还是会保留原来的语义。
    单引号’’,会转义特殊字符,使得特殊字符失去原来的语义,变成一个普通字符串。

例子:

person:
	#下面会成为Michael 换行 Jordan,因为特殊字符换行符生效了。
	name: "Michael \n Jordan" 
	#下面会成为Zhang \n San ,因为换行符\n被转义了,只是普通的字符。
	fatherName: 'Zhang \n San'
对象与Map的写法:
  1. 对象的写法还是k,v键值对。Map的写法与对象的写法一样。
person:
	firstName: Jordan
	lastName: Michael 
	age: 45
#也可以这样写
person: {firstName: Jordan,lastName: Michael,age: 45}
数组(List、Set、数组)的写法:

有两种写法:

  1. 用-值表述数组中的一个元素。
  2. 行内写法。

例子:

#第一种写法:
person:
	-ZhangSan
	-LiSi
	-WangWu

#第二种行内写法:
person: [ZhangSan,LiSi,WangWu]

以下对一个比较复杂的对象进行配置的一个例子:

//Teacher类
@Setter  //这些是lombok框架的注解。
@ToString
@ConfigurationProperties(prefix = "teacher")
@Component  //只有把Teacher 注册成容器中的主键,被容器管理,才能对其进行配置。
public class Teacher {

    //名字
    private String name;

    //年龄
    private int age;

    //学校名
    private String schoolName;

    //伴侣
    private Person person;

    //生日
    private Date birthday;

    //true means man,false means woman
    private boolean sex;

    //宠物
    private List<Pet> pets;

    //学生
    private Student[] students;

    //其他
    Map<String,Object> others;


}

//Student类
@Setter
@ToString
public class Student {

    private String name;
    private int age;
    private boolean sex;
}


//Pet类
@Setter  
@ToString
public class Pet {
    private String name;
}


//Person类:
@Component
@Data
public class Person {

    private String name;
}

下面是对应的yml配置:

teacher:
  name: 张三
  age: 23
  schoolName: 清华大学
  birthday: 1980/12/2
  sex: true
  person:
    name: 小兔子
    
  #配置pets属性
  pets:
    - {name: dog}
    - {name: cat}
    - {name: rabbit}
  students:
    - name: 李四
      age: 18
      sex: true
    - name: 王五
      age: 19
      sex: false

  others:
    hobby: 唱跳Rap篮球
    favourateFood: 小盘鸡丁

测试代码:

@SpringBootTest
class SpringbootstudyApplicationTests {

	@Autowired
	private Teacher teacher;

	@Test
	void test() {
		System.out.println(teacher);
	}

}

//执行结果:
//Teacher(name=张三, age=23, schoolName=清华大学, person=Person(name=小兔子), birthday=Tue Dec 02 00:00:00 CST 1980, sex=true, pets=[Pet(name=dog), Pet(name=cat), Pet(name=rabbit)], students=[Student(name=李四, age=18, sex=true), Student(name=王五, age=19, sex=false)], others={hobby=唱跳Rap篮球, favourateFood=小盘鸡丁})

//可以看出配置文件的内容都配置上去了,详细看此例子和上述讲的语法,基本就能熟悉yaml语法。

关于例子中用到的@ConfigurationProperties注解的详细讲解可以看博主的另外一篇文章:
@Value与@ConfigurationProperties注解的讲解与区别