Properties
和以前spring一样用法。
yaml:优先级不如properties
简介:适合用来做以数据为中心的配置文件。
基本语法:
1.key: value——注意:后面的空格
2.使用缩进表示层级关系,只要元素左对齐即表示同层级。
3.# 表示注释
4.字符串不加‘ ’或" ",不然代表转义。
\n 换行输出 yml里使用单引号,则将其作为字符串输出
yml使用双引号,则还是换行输出
数据类型
1 .单个,不可分割的值:string,boolean,date等
k: v
2 .对象:键值对的集合
#单行:
obj: {k1:v1,k2:v2,k3:v3}
#多行
obj:
k1: v1
k2: v2
k3: v3
3 .数组:array,list等
#单行:
k: [v1,v2,v3]
#多行
k:
- v1
- v2
- v3
以Person复杂对象为例:
@Component
@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;
}
@Data
public class Pet {
private String name;
private Double weight;
}
yml实际写法:
application.yml
person:
userName: zhangsan
boss: true
birth: 2022/8/7
age: 25
# interests: [足球,篮球]
interests:
- 篮球
- 足球
animal: [猫,狗]
# score:
# english: 90
# math: 90
score: {english: 90,math: 90}
salarys:
- 9999.89
- 9899.56
pet:
name: 旺财
weight: 20
allPets:
sick:
- {name: 狗子,weight: 25}
- name: 猫子
weight: 18.5
- name: 虫子
weight: 1.3
healthy: [{name: mimi,weight: 23},{name: miaomiao,weight: 24}]
打印看看效果:
@ResponseBody
@Controller
public class HelloController {
@Autowired
Person person;
@RequestMapping("/person")
public Person person(){
return person;
}
}
结果:
自定义类绑定的配置提醒
写application.yml的时候不像spring的配置一样有提醒,不便于开发。
引入依赖:官网Configuration Metadata位置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
结果:有提醒了。
userName user-name是一样的作用,-n就是N。
旧版本打包的时候注意把依赖解除,不要把configuration-processor也打包了(在pom有相应的写法),目前使用的2.7版本官网上没有这一段,应该是已经把这个问题解决了。如果用老版本的springboot需要注意一下。