原創:@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注解的使用講解


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM