目录
1.简介
YAML是 “YAML Ain’t a Markup Language” (YAML不是一种标记语言)的递归缩写。
在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)
这种语言以数据做为中心,而不是以标记语言为重点!
2.对比
SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的
- application.properties
- 语法结构 : key=value
server.port=8081
- application.yaml
- 语法结构 : key:空格 value
server:
prot: 8080
键值对
name: zhang
对象(子集开头必须要空格)
student:
name: zhang
age: 21
行内写法
student: {name: zhang,age: 21}
数组
pets:
- cat
- dog
pets: [cat,dog]
3.注入配置文件
这是yaml文件强大的地方!之后笔记会提到
4.测试
4.1 创建SpringBoot项目
4.2 导入Pom
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
//在yamal中,自定义类没有提示。则需要一下导入
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<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>
4.3 编写实体类
4.3.1 Person
package com.node.demo.bean;
import lombok.Data;
import lombok.ToString;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
@ConfigurationProperties(prefix = "person")
@Component
@Data
@ToString
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;
}
4.3.2 Pet
package com.node.demo.bean;
import lombok.Data;
import lombok.ToString;
@Data
@ToString
public class Pet {
private String name;
private Double weight;
}
4.4 编写application.yaml
person:
userName: zhangsan
#userName: 'zhangsan \n 李四':单引号会将\n作为字符串输出,单引号改变了转义字符(转转变不转)
#userName: "zhangsan \n 李四":双引号会将\n作为换行输出
boss: false
birth: 2019/12/12 20:12:33
age: 18
pet:
name: tomcat
weight: 23.4
interests: [篮球,游泳]
#interests:
# - 篮球
# - 足球
# - 18
animal:
- jerry
- mario
score:
english:
first: 30
second: 40
third: 50
math: [131,140,148]
chinese: {first: 128,second: 136}
salarys: [3999,4999.98,5999.99]
allPets:
#sick: 生病的宠物
sick:
- {name: tom}
- {name: jerry,weight: 47}
#health: 健康的宠物
health: [{name: mario,weight: 47}]
4.5 编写Controller
package com.node.demo.controller;
import com.node.demo.bean.Person;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@Autowired
Person person;
@RequestMapping("/person")
public Person person(){
return person;
}
}