今天练习使用@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
网友评论