spring之使用yaml文件实现属性注入
1.简介
yaml不算是一种标记语言,但是规定了自己的格式,可以通过对格式的设置进行各种变量的配置,这一点上,类似于普通的properties文件,但是,它又不仅仅只能给普通变量赋值,还可以为对象、数组、MAP等进行赋值。
值得注意的是,yaml文件中变量名和变量的值之间使用冒号加空格填充,而且属性也要比父级属性缩进一个空格,比如:
-
将name变量命名为zhangjiarui
name: zhangjiarui
-
将person对象下面的name属性命名为zhangjiarui
person: name: zhangjiarui
2.三种常用变量属性的演示
-
数组赋值
list: - code - music - girl
-
MAP赋值
map: {k1: v1,k2: v2}
-
对象赋值
person: name: zhangjiarui age: 3 happy: false birthday: 2000/3/20
3.程序实操
-
application.yaml
person: name: zhangjiarui age: 3 happy: false birthday: 2000/3/20 map: {k1: v1,k2: v2} list: - code - music - girl
-
Person类
@Component @Data @AllArgsConstructor @NoArgsConstructor @ConfigurationProperties(prefix = "person") public class Person { private String name; private int age; private Boolean happy; private Date birthday; private Map<String,Object> map; private List<Object> list; }
-
测试代码
@SpringBootTest class Springboot02ApplicationTests { @Autowired private Person person; @Test void contextLoads() { System.out.println(person.toString()); } }
-
测试结果
Person(name=qinjiang, age=3, happy=false, birthday=Mon Mar 20 00:00:00 CST 2000, map={k1=v1, k2=v2}, list=[code, music, girl])
4.总结
以上,实现了使用yaml文件对类属性的自动装配,可以看出,在对基本的变量进行赋值的话,基本上和properties文件没有区别,只是格式不同,但是比properties文件多了给对象、数组、MAP等特殊数据结构赋值的功能,我只能说真香!