yaml给实体类赋值
准备工作
pojo
Dog
//@Component为了更容易被扫描
@Component
public class Dog {
private String name;
private Integer age;
//有参无参 setter getter toString
}
Person
@Component
//@ConfigurationProperties(prefix = "person") 相当于绑定了application.yaml里面的person
//爆红的话得加个依赖
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age;
private Boolean happy;
private Date Birthday;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
//有参无参 setter getter toString
}
application.yaml
person:
name: 张三
age: 3
happy: false
birthday: 2020/02/02
maps: {k1,k2,k3}
lists:
- code
- music
- girl
dog:
name: 旺财
age: 3
测试
package com.tian;
import com.tian.pojo.Dog;
import com.tian.pojo.Person;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.time.Period;
@SpringBootTest
class Springboot03ConfigApplicationTests {
@Autowired
//把狗装配过来了
private Person person;
@Test
void contextLoads() {
System.out.println(person);
}
}
第二种方式(不建议使用)
1.先编写个自己的yaml 例如qinjiang.yaml
2.person类的修改
3.测试
扩展
firstName(pojo)和first-name(yml) 可以赋值
结论:
- 配置yml和配置properties都可以获取到值,强烈推荐yml
- 如果我们在某个业务中,只需要获取配置文件中的某个值,可以使用一下@value
- 如果说,我们专门编写了一个JavaBean来和配置文件进行映射,就直接使用@configurationProperties,不要犹豫!