Yaml文件:
定义:
Yaml文件是用Yaml语言写的文件,Yaml语言是一种可读性高,更注重数据表达,可扩展的一种数据标记语言。Yaml文件以.yaml或者.yml为后缀,例如application.yml、application.yaml都可以。非常适用于作为配置文件使用。Spring Boot就是可以用application.yml作为配置文件。
基本语法:
- k:(空格)v,表示一对键值对,空格必须要有。
- 用空格缩进表示层级关系,相同的缩进(左对齐)的表示同一层级。
- 属性(键)和值都是大小写敏感的。
- 用#号进行注释。
比如spring boot的配置:
server:
port: 8088
#path: /hello-world #号进行注释
#port配置和path配置属于同一层级,server配置是他们的上层。
值的写法:
字面量的写法:
字面量指得是普通的值,例如数字,字符串,布尔值,日期等
- 写法:k: v ,字面量直接来写。
person:
age: 23 #直接写数字23
name: Michael Jordan #直接写字符串
flag: false #写布尔值。
- 字符串默认不用加上单引号或者双引号。
双引号"",不会对特殊字符串进行转义,特殊字符串还是会保留原来的语义。
单引号’’,会转义特殊字符,使得特殊字符失去原来的语义,变成一个普通字符串。
例子:
person:
#下面会成为Michael 换行 Jordan,因为特殊字符换行符生效了。
name: "Michael \n Jordan"
#下面会成为Zhang \n San ,因为换行符\n被转义了,只是普通的字符。
fatherName: 'Zhang \n San'
对象与Map的写法:
- 对象的写法还是k,v键值对。Map的写法与对象的写法一样。
person:
firstName: Jordan
lastName: Michael
age: 45
#也可以这样写
person: {firstName: Jordan,lastName: Michael,age: 45}
数组(List、Set、数组)的写法:
有两种写法:
- 用-值表述数组中的一个元素。
- 行内写法。
例子:
#第一种写法:
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注解的讲解与区别