SpringBoot配置-yml配置与实体类绑定,获取yml中配置的值
1.新建一个springboot项目
2.引入相关依赖
1 <dependencies> 2 <dependency> 3 <groupId>org.springframework.bootgroupId> 4 <artifactId>spring-boot-starter-webartifactId> 5 dependency> 6 7 8 <dependency> 9 <groupId>org.springframework.bootgroupId> 10 <artifactId>spring-boot-starter-testartifactId> 11 <scope>testscope> 12 dependency> 13 14 15 <dependency> 16 <groupId>org.springframework.bootgroupId> 17 <artifactId>spring-boot-configuration-processorartifactId> 18 <optional>trueoptional> 19 dependency> 20 dependencies>
3.编写实体类,实体类中添加get,set,toString方法
1 package com.xiaoma.ymlvalueobtain.bean; 2 3 4 public class Dog { 5 private String DogName; 6 private Integer DogAge; 7 8 public String getDogName() { 9 return DogName; 10 } 11 12 public void setDogName(String dogName) { 13 DogName = dogName; 14 } 15 16 public Integer getDogAge() { 17 return DogAge; 18 } 19 20 public void setDogAge(Integer dogAge) { 21 DogAge = dogAge; 22 } 23 24 @Override 25 public String toString() { 26 return "Dog{" + 27 "DogName='" + DogName + '\'' + 28 ", DogAge='" + DogAge + '\'' + 29 '}'; 30 } 31 }
1 package com.xiaoma.ymlvalueobtain.bean; 2 3 import org.springframework.boot.context.properties.ConfigurationProperties; 4 import org.springframework.stereotype.Component; 5 6 import java.util.Date; 7 import java.util.List; 8 import java.util.Map; 9 10 public class Person { 11 private String PersonName; 12 private Integer PersonAge; 13 private boolean Boos; 14 private Date PersonBrith; 15 16 private Mapmap; 17 private List
4.右键resources文件夹,选择new-》file,文件名字为application.yml,然后编写yml配置文件数据(注意:编写yml配置数据的时候要注意空格)
1 person: 2 PersonName: xiaoma 3 PersonAge: 18 4 Boos: true 5 PersonBrith: 1999/11/12 6 map: {k1: v1,k2: 12} 7 list: 8 - zhangsan 9 - lisi 10 dog: 11 DogName: 小狗 12 DogAge: 10
5.通过再Person类里的类名上添加@Component和@ConfigurationProperties(prefix = "person")注解来将配置文件数据和实体类进行绑定,其中prefix就是yml配置文件中要绑定的东西。因为只有当@ConfigurationProperties是容器中的组件的时候,才能使用容器提供的功能,他才会起作用,所以我们要把这个这个注解通过@Component注解加载到容器中
6.进行单元测试
1 @Autowired //将Person类注入进来 2 Person person; 3 @Test 4 public void test01(){ 5 System.out.println(person); 6 }
7.运行结果,就这样就获取到了yml文件中的值
补充:@Value和@ConfigurationProperties注解的区别
如果只需要获取配置文件中的某一个值的时候时候@value,如果我们要获取配置文件中的所有值用@ConfigurationProperties