yaml配置注入
SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的application
- application.properties 语法结构 :key=value
- application.yaml 语法结构 :key:空格 value
yaml语法
# 属性
name: xiaomi
# 对象
Teacher:
name: Teacher Wang
age: 26
# 对象的行内写法
Student: {name: Student Wang,age: 26}
# 数组
animals:
- cat
- pig
- dog
# 数组的行内写法
pets:[cat,dog,pig]
注意:yaml的语法要求严格!
- 空格不能省略
- 以缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的。
- 属性和值的大小写都是十分敏感的。
yaml实现注入配置文件
@ConfigurationProperties(prefix = "people")实现实体类和application.yaml联系起来。- 编写
@ConfigurationProperties(prefix = "people")会出现爆红,直接点击:上面的链接去官网,把提示给你的依赖放在pom.xml就可以解决这个爆红了,解决后要重启IDEA
Cat.java
package com.example.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Component
public class Cat {
private String name;
private Integer age;
}
People.java
package com.example.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Component
@ConfigurationProperties(prefix = "people")
public class People {
private String name;
private Integer age;
private List<Object> hobby;
private Cat cat;
private Map<String,Object> maps;
private boolean happy;
private Date date;
}
application.yaml
people:
name: 小米
age: 23
hobby:
- music
- code
- write
cat:
name: 旺财
age: 3
maps: {m1: 1,m2: 2}
happy: true
date: 2021/4/5
测试类
package com.example;
import com.example.pojo.People;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Springboot02ConfigApplicationTests {
@Autowired//将people注入
People people;
@Test
void contextLoads() {
System.out.println(people);
}
}
运行结果:
People(name=小米, age=23, hobby=[music, code, write], cat=Cat(name=旺财, age=3), maps={m1=1, m2=2}, happy=true, date=Mon Apr 05 00:00:00 CST 2021)