SpringBoot-获取YAML文件值

首先我们需要创建一个SpringBoot项目,在这个项目里面我们可以创建2个pojo类

第一个Person.class

@Component
@ConfigurationProperties(prefix = "person")
@Data
public class Person {

    // 基本语法
    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date birthday;

    // 集合形式
    private Map<String, Object> maps;
    private List<Object> lists;

    // 对象形式
    private Dog dog;

}

  以上使用了lombok的依赖,所以直接使用@Data就可以覆盖这个pojo类的setter  getter 和 toString方法

  lombok的依赖如下

<dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
     <version>1.18.6</version>
</dependency>

  由于上面的Person类里面又关联了Dog类,所以添加下面的Dog.class

@Data
public class Dog {

    private String name;

    private Integer age;

}

  接下来我们就要配置application.yaml文件里面的内容了,与Person类的字段要一一对应

application.yaml

person:
  lastName: "张三"
  age: 18
  boss: false
  birthday: 2018/01/25

  # 行内式
  maps: {key1: value1, key2: value2}
  lists:
    - lisi
    - pcliu
    - tom

  dog:
    name: 小狗
    age: 2

  书写好以上的信息以后就要思考如何将配置文件中配置的每一个属性的值,映射到这个组件中?

    主要使用Person类当中的@ConfigurationProperties这个注解:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;

    它当中的默认参数prefix = "person":配置文件中哪个下面的所有属性进行一一映射

    最后使用@Component这个注解:只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能

注意还要在pom.xml文件里导入以下的依赖:导入配置文件处理器,配置文件进行绑定就会有提示

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-configuration-processor</artifactId>
	<optional>true</optional>
</dependency>

最后我们就可以在测试类里面进行打印yaml文件里面的值 

@RunWith(SpringRunner.class)
@SpringBootTest
public class Springboot01YamlApplicationTests {

    @Autowired
    private Person person;

    @Test
    public void contextLoads() {
        System.out.println(person);
    }

}

最后得出的结果就如下图

  

  

 

posted @ 2019-09-03 16:19  瞳孔冷色  阅读(2401)  评论(0编辑  收藏  举报