原创:@configurationProperties从 yaml配置文件及映射到实体类并取值( spring boot中

案例要求 spring boot 及目录结构如如下:

 

 spring boot 与ssm 感悟
 1:元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),
 主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
 2:Spring boot 为了简化 xml配置,做了两个方面工作。
  a)简化依赖配置:采用spring-boot-starter-xxxxx,其实中starter,只不过是把我们某一模块,比如web 开发时所需要的所有JAR 包打包好给我们而已。不过它的厉害之处在于,能自动把配置文件搞好,不用我们手动配置。所以说,Spring Boot 是简化配置。SGLF
  b)把SSM原来配置****applicationContent.xml的一些xml配置。
采用(appliction.yaml或application.properties)***.yamlt和properties格式配置。这两种格式确实比xml更简洁.

 

本案例思路:
  本案例重要性是为学习spring boot 配置做准备。两个实体类。a)Person实体类人,包括姓名、年龄、地址属性的类型为字面量。同时也包含数组、对象类型。其中拥有狗就是自定义类型 Dog实体类的类型。
    

操作步骤:

  1.  新建实体类dog类:
    /**
     * Dog实体类,为Person实体类拥有Dog类型做准备
     */
    public class Dog {
        String dogName;
        Integer dogAge;
    
        public String getDogName() {
            return dogName;
        }
    
        public void setDogName(String dogName) {
            this.dogName = dogName;
        }
    
        public Integer getDogAge() {
            return dogAge;
        }
    
        public void setDogAge(Integer dogAge) {
            this.dogAge = dogAge;
        }
    
        @Override
        public String toString() {
            return "Dog{" +
                    "dogName='" + dogName + '\'' +
                    ", dogAge=" + dogAge +
                    '}';
        }
    }


  2.  新建实体类Person,并拥有Dog实体类

    package com.ibaiqi.springboot2.domain;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    import java.util.List;
    import java.util.Map;
    
    /**
     * @ConfigurationProperties(prefix = "person") 此注解作用是将配置文件的值映射到类上使用。
     * 即person来源application.yaml或application.propertiesk配置文件中的值。
     * 把以此为为前辍的后边所有属性映身到此类
     */
    @Component
    @ConfigurationProperties(prefix = "person")
    public class Person {
        String userName;
        int age;
        String add;
        Dog dog;
        List<String> allAnimal;
        Map<String,Object> childs;
    
    
    
    
        public Dog getDog() {
            return dog;
        }
    
        public void setDog(Dog dog) {
            this.dog = dog;
        }
    
        public String getUserName() {
            return userName;
        }
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getAdd() {
            return add;
        }
    
        public void setAdd(String add) {
            this.add = add;
        }
    
        public List<String> getAllAnimal() {
            return allAnimal;
        }
    
        public void setAllAnimal(List<String> allAnimal) {
            this.allAnimal = allAnimal;
        }
        public Map<String, Object> getChilds() {
            return childs;
        }
    
        public void setChilds(Map<String, Object> childs) {
            this.childs = childs;
        }
    
        @Override
        public String toString() {
            return "Person{" +
                    "userName='" + userName + '\'' +
                    ", age=" + age +
                    ", add='" + add + '\'' +
                    ", dog=" + dog +
                    ", allAnimal=" + allAnimal +
                    ", childs=" + childs +
                    '}';
        }
    }

     

  3. 新建yaml数据格式,存储在application.yaml中

    person:
      userName: 张三
      age: 18
      add: 江苏南京
      dog:
         dogName: 旺旺狗
         dogAge: 5
      allAnimal: [鸟,鸡,牛]
      childs:
        -
          childsName: 张大毛
          sex: 男
          age: 18
        -
          childsName: 张二毛
          sex: 女
          age: 16

     

    本数据Person带有属性与上边两个实体属性相同。通过配置@configurationProperties(prefix="指向配置文件属性以什么开头,也可以写成属性.属性")

 扩散阅读:Spring Boot中@ConfigurationProperties注解的使用讲解

posted @ 2020-07-14 07:33  码哥之旅  阅读(1753)  评论(0编辑  收藏  举报