springboot

@ConfigurationProperties注解

2018-06-21  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读