對象、Map(屬性和值)
例如配置類中的字段為:
Map<String,Object> maps;
在yml配置文件中,行內寫法:
person.maps: {key1: value1,key2: value2}
需要注意冒號(:)后的空格,或者
person:
maps:
key: value
在properties配置文件中
person.maps.key=value
數組(List、Set)
在yml配置文件中
person:
list:
- 1
- 2
- 3
行內寫法
person:
list: [1,2,3]
在properties配置文件中
person.list[0]=1
person.list[1]=2
person.list[2]=3
配置List<Bean>
創建dto對象
@Data
@NoArgsConstructor
public class ActionDto {
private String nameC;
private String nameE;
}
yml配置
action:
list:
- nameC: asd
nameE: asd1
- nameC: qwe
nameE: qwe1
config注入
@Data
@Component
@ConfigurationProperties(prefix = "action")
public class ActionConfig {
private List<ActionDto> list;
}
也可以采用map的方式裝配。
yml配置(兩種方式都可以,選一種即可)
action1:
map:
asdasd: qwe
zxczxc: ewq
action2: "{key1: 'value1', key2: 'value2'}"
config注入:
@Data
@Component
@ConfigurationProperties(prefix = "action1")
public class ActionConfig {
private Map<String, String> map;
}
@Data
@Component
public class ActionConfig {
@Value("#{${action2}}")
private Map<String, String> maps;
}
自定義配置屬性
Spring Boot提供自定義配置組件,拿前面舉例的屬性來寫一個規范的配置文件:
@Component // 或者@Configuration
@ConfigurationProperties(prefix = "person")
public class Person {
private Map<String, Object> maps;
private List<String> list;
private String name;
private int age;
public Map<String, Object> getMaps() {
return maps;
}
public void setMaps(Map<String, Object> maps) {
this.maps = maps;
}
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
@ConfigurationProperties 注解向Spring Boot聲明該類中的所有屬性和配置文件中相關的配置進行綁定。prefix = "person":聲明配置前綴,將該前綴下的所有屬性進行映射。
@Component 或者@Configuration:將該組件加入Spring Boot容器,只有這個組件是容器中的組件,配置才生效。