美文网首页springboot
@ConfigurationProperties注解

@ConfigurationProperties注解

作者: 轻易流逝 | 来源:发表于2018-06-21 22:51 被阅读0次

    今天练习使用@ConfigurationProperties注解遇到一点小问题。
    问题是:属性注入不进去。原因:最终发现是没有set方法导致的

    @ConfigurationProperties注解的作用是配置属性。可以根据配置文件中的配置内容直接赋值到对象属性。

    下面开始堆代码。

    首先赋值最简单的String类型

    import org.springframework.boot.context.properties.ConfigurationProperties;
    
    @ConfigurationProperties(prefix = "test.prop")
    public class TestProperties {
        
        private String str;
    
        public String getStr() {
            return str;
        }
    
        public void setStr(String str) {
            this.str = str;
        }
    
        @Override
        public String toString() {
            return "TestProperties [str=" + str + "]";
        }
    
    }
    

    yml配置文件里添加

    test.prop:
      # 字符串
      str: I am string.
    

    这样启动application就可以将test.prop.str的属性赋值给str变量。
    下面是各种类型的赋值

    数组、List、Map赋值、List里是对象等

    import java.util.Arrays;
    import java.util.List;
    import java.util.Map;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    
    @ConfigurationProperties(prefix = "test.prop")
    public class TestProperties {
        private String str;
        private String[] strArray;
        private List<String> strList;
        private Map<String, String> strMap;
        private List<Author> authors;
        private InnerProp innerProp;
    
        public String getStr() {
            return str;
        }
    
        public void setStr(String str) {
            this.str = str;
        }
    
        public String[] getStrArray() {
            return strArray;
        }
    
        public void setStrArray(String[] strArray) {
            this.strArray = strArray;
        }
    
        public List<String> getStrList() {
            return strList;
        }
    
        public void setStrList(List<String> strList) {
            this.strList = strList;
        }
    
        public Map<String, String> getStrMap() {
            return strMap;
        }
    
        public void setStrMap(Map<String, String> strMap) {
            this.strMap = strMap;
        }
    
        public List<Author> getAuthors() {
            return authors;
        }
    
        public void setAuthors(List<Author> authors) {
            this.authors = authors;
        }
    
        public InnerProp getInnerProp() {
            return innerProp;
        }
    
        public void setInnerProp(InnerProp innerProp) {
            this.innerProp = innerProp;
        }
    
        @Override
        public String toString() {
            return "TestProperties [str=" + str + ", strArray=" + Arrays.toString(strArray) + ", strList=" + strList
                    + ", strMap=" + strMap + ", authors=" + authors + ", innerProp=" + innerProp + "]";
        }
    
    }
    

    yml配置文件里这么写

    # 读取配置文件测试数据
    test.prop:
      # 字符串
      str: I am string.
      # 数组、列表
      strArray: string1,string2
      strList: string3,string4
      # map
      strMap: 
        key1: value1
        key2: value2
      authors:
        - name: corgiking
          sex: 男
          age: 25
        - name: goaler
          sex: 男
          age: 25
      innerProp:
        str: I am string.
        strArray: string5,string6
        strList: string7,string8
        strMap: 
          key3: value3
          key4: value4
    

    相关文章

      网友评论

        本文标题:@ConfigurationProperties注解

        本文链接:https://www.haomeiwen.com/subject/qbfcyftx.html