Spring Boot的yml、properties配置文件自动注入详解

Spring Boot的yml、properties配置文件自动注入详解
1.pom.xml文件导入相关组件



     org.springframework.boot 
     spring-boot-configuration-processor 
     true 

2.创建yml、properties配置文件
这边我们是使用IDEA快捷搭建SpringBoot项目,会自动生成一个application.properties配置文件。然后我们自己再新建一个application.yml、person.properties两个配置文件用于后续的功能实现及对比。Spring Boot的yml、properties配置文件自动注入详解_第1张图片
2.创建Person、Dog两个实体类,后续使用配置文件自动注入实体类的数据

  1. Person实体类
package com.cd.springboot02config.beanT;


import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Author: Chendc
 * @Date: 2019/8/7 9:17
 */
@Component
@ConfigurationProperties(prefix = "person")
public class Person {

    /**
     * 基本类型数据
     */
    private String name;
    private Integer age;
    private Boolean isMan;
    private Date birth;
    /**
     * 复杂类型数据
     */
    private Map maps;
    private List lists;
    private Dog dog;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Boolean getMan() {
        return isMan;
    }

    public void setMan(Boolean man) {
        isMan = man;
    }

    public Date getBirth() {
        return birth;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }

    public Map getMaps() {
        return maps;
    }

    public void setMaps(Map maps) {
        this.maps = maps;
    }

    public List getLists() {
        return lists;
    }

    public void setLists(List lists) {
        this.lists = lists;
    }

    public Dog getDog() {
        return dog;
    }

    public void setDog(Dog dog) {
        this.dog = dog;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", isMan=" + isMan +
                ", birth=" + birth +
                ", maps=" + maps +
                ", lists=" + lists +
                ", dog=" + dog +
                '}';
    }
}


  1. Dog实体类
package com.cd.springboot02config.beanT;

/**
 * @Author: Chendc
 * @Date: 2019/8/7 9:20
 */
public class Dog {
    private String name;
    private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

3.实现配置文件自动注入需要用到的注解
@Component、@ConfigurationProperties、@Autowired、@PropertySource
Spring Boot的yml、properties配置文件自动注入详解_第2张图片
3.编写配置文件需要注入的数据

  1. application.properties


#配置person的值
person.name=王五application
person.age=24
person.birth=2012/13/14
person.isMan=false
person.maps.k1=v1
person.maps.k2=v2
person.lists=a1,b2,c3
person.dog.name=dog
person.dog.age=2

2.application.yml

person:
   name: 张三yml
   age: 18
   isMan: true
   birth: 2012/12/12
   maps: {k1: v1,k2: v2}
   lists:
     - lisi
     - zhaoliu
   dog:
       name: 小狗
       age: 2

3.person.properties


#配置person的值
person.name=张飞person
person.age=24
person.birth=2012/13/14
person.isMan=false
person.maps.k1=v1
person.maps.k2=v2
person.lists=a1,b2,c3
person.dog.name=dog
person.dog.age=2

4.使用SpringBoot提供的单元测试类,进行测试
Spring Boot的yml、properties配置文件自动注入详解_第3张图片

  1. 测试一:三个配置文件都存在Person数据,不去指明读取哪个配置文件,测试配置文件的优先级。
    测试结果:多个配置文件在同个目录下优先注入application.properties数据
    如图所示:Spring Boot的yml、properties配置文件自动注入详解_第4张图片
    2.测试二:注释掉application.properties文件,测试application.yml和自定义.properties文件优先级。
    测试结果:application.yml大于自定义.properties文件的优先级
    如图所示:
    Spring Boot的yml、properties配置文件自动注入详解_第5张图片
    3.测试三:使用@PropertySource(value = {“classpath:person.properties”})注解指定读取配置文件数据注入。
    如图所示:Spring Boot的yml、properties配置文件自动注入详解_第6张图片
    以上就是一些简单的探索了,要是大家有啥高端玩法记得评论、私信我鸭,一起进步!

你可能感兴趣的:(SpringBoot,yml,properties)