11.配置文件-yaml
1.key: value kv之间有空格
2.大小写敏感
3.使用缩进表示层级关系
4.缩进的空格数不重要,只要相同层级的元素左对齐即可
5.'#'表示注释
6.字符串无需加引号,如果要加,"与"表示字符串内容 会被转义 /不转义
数据类型:
1.字面量:单个的,不可再分的值:date、booleab、String、number、null
k: v
2.对象:键值对的集合。map、hash、set、object
行内写法:k: {k1: v1,k2: v2,k3: v3}
或者:
k:
k1: v1
k2: v2
k3: v3
3.数组:一组按照次序排列的值。array、list、queue
行内写法: k: [v1,v2,v3]
或者:
k:
- v1
- v2
- v3
例子:
1.有实体类:Person
//1.lombok的get/set标签
@Data
//2.toString标签
@ToString
//3.全参构造器
@AllArgsConstructor
//4.无参构造器
@NoArgsConstructor
//5.绑定springboot的配置文件,前缀为perosn
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age;
private List<Car> carList;
private Map<String,Dog> dogMap;
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
}
2.application.yaml或者application.yml写法
person:
name: 吴孟达
age: 18
#carList属性绑定
carList:
- {name: 宝马,price: 60万}
- name: 保时捷
price: 100万
- name: 路虎
price: 200万
#dogMap属性绑定
dogMap:
dog1: {name: 泰迪,age: 18}
dog2:
name: 金毛
age: 17
3.控制类
@RequestMapping("/getPerson")
public Person getPerson(){
return person;
}
输出:
{"name":"吴孟达","age":18,"carList":[{"name":"宝马","price":"60万"},{"name":"保时捷","price":"100万"},{"name":"路虎","price":"200万"}],"dogMap":{"dog1":{"name":"泰迪","age":18},"dog2":{"name":"金毛","age":17}}}
4.application.properties和application.yaml的加载顺序
先加载application.properties中的数据,再加载application.yaml中的数据
例如在application.properties中配置:
person.name=刘丹
测试输出:发现名称变为properties中的名字
{"name":"刘丹","age":18,"carList":[{"name":"宝马","price":"60万"},{"name":"保时捷","price":"100万"},{"name":"路虎","price":"200万"}],"dogMap":{"dog1":{"name":"泰迪","age":18},"dog2":{"name":"金毛","age":17}}}
yaml文件中加上''和""以及不加对转义字符的支持
.在控制类输出时:
@RequestMapping("/getPerson")
public Person getPerson(){
//输出person的name属性作为测试标准
System.out.println(person.getName());
return person;
}
1.当yaml文件中name属性不加单引号和双引号
person:
name: 吴孟达 \n 刘丹
age: 18
..
输出:(发现不加的话不支持转义:换行符不生效)
吴孟达 \n 刘丹
2.加上单引号
person:
name: '吴孟达 \n 刘丹'
age: 18
...
输出:(发现加单引号不支持转义:换行符不生效)
吴孟达 \n 刘丹
3.加上双引号
person:
name: "吴孟达 \n 刘丹"
age: 18
...
输出:(发现加上双引号支持转义:换行符生效)
吴孟达
刘丹
结论:加双引号,转义字符生效
yaml文件自定义类的自动提醒:
1.导入spring-boot-configuration-processor
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
2.在maven的打包配置中除去spring-boot-configuration-processor,这个只是做一个提醒功能,没有必要打到包中
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
//排除提醒功能
<configuration>
<excludes>
<exclude>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
3.然后重新启动下项目就配置文件就可以自动提示了

浙公网安备 33010602011771号