YAML——适合用来做以数据为中心的配置文件
基本语法
- 使用缩进表示层级关系。
- 缩进时不允许使用 Tab 键,只允许使用空格。(实际使用idea开发中,Tab也有效)
- 缩进的空格数不重要,但同级元素必须左侧对齐。
- 大小写敏感。
- “#”表示注释
基础回顾:java中的数据类型
- 字面量:单个的、不可再分的值。date、boolean、string、number、null
- 对象:键值对的集合,如map、hash、set、object
- 数组:一组按次序排列的值:array、list、queue
在 YAML 中,使用“key:[空格]value”的形式表示一对键值对(空格不能省略)
对不同的数据类型,表示方法也不一样:
字面量:k: v
对象
行内写法: k: {k1:v1,k2:v2,k3:v3}
#或
k:
k1: v1
k2: v2
k3: v3
数组
行内写法: k: [v1,v2,v3]
#或者
k:
- v1
- v2
- v3
示例
建立Person类
@ConfigurationProperties(prefix = "person")
@Data
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;
}
Pet类
@Data
public class Pet {
private String name;
private Double weight;
}
同时在Resources下建立application.yaml文件
person:
userName: zhangsan
boss: true
birth: 2017/01/01
age: 30
interests:
- 篮球
- 足球
animal: [cat,dog]
score:
english: 80
math: 90
salarys:
- 9999.98
- 9999.99
pet:
name: xxx
weight: 100
allPets:
sick:
- {name: aaa,weight: 999.9}
- name: bbb
weight: 100.9
- name: ccc
weight: 200.9
health:
- name: ddd
weight: 300
在HelloController.java中添加以下代码
@Autowired
Person person;
@RequestMapping("/person")
public Person person(){
return person;
}
其中@Autowired从容器中拿出person实例。
在MainApplication.java中运行SpringApplication.run(MainApplication.class,args);
发现输出了yaml文件中定义的各个属性。
我们可以看到,使用yaml文件可以使属性配置层级清晰,更有条理,并且在后续如果需要配置第三方包的属性时不需要重复冗长的前缀。
字符串里单双引号的区别
在yaml文件中单双引号有不同的作用:
单引号会转义,双引号不会转义(相对于转义字符)
看上去有点绕弯,实际上就是在双引号中的转义字符会正常发挥作用,例如
person:
userName: "zhangsan /n lisi"
系统最后输出的结果是
zhangsan
lisi
而单引号则不同
person:
userName: 'zhangsan /n lisi'
系统最后输出的结果是
zhangsan /n lisi
经过测试,不加引号的结果与加单引号相同
标签:weight,name,配置文件,person,private,YAML,yaml,zhangsan,springboot From: https://www.cnblogs.com/tarorat/p/17105165.html