一、開發(fā)環(huán)境
- jdk:1.8
- springboot:1.5.11.RELEASE
二贫悄、需求
- 通過application.yml將值動態(tài)注入到各屬性中
public class Clazz {
private String str; // 字符串
private List<String> strings; // 字符串列表
private List<User> users; // 對象列表,腦補User中包含name和age兩個屬性
}
三娘摔、步驟
- 編寫yml文件窄坦,這里命名為
cust.yml
,當(dāng)然可以直接用application.yml
,也可以用properties
鸭津,異曲同工這里不展開討論
custom:
str: ABCD
strings: ABC, DEF, GHI
users:
- { name: zhangsan, age: 20 }
- { name: lisi, age: 22 }
- 代碼進行Springboot配置
@Component
@PropertySource("classpath:cust.yml") // 如果是application.yml,可以忽略
@ConfigurationProperties("custom") // 或(prefix = "custom")
public class Clazz {
private String str; // 字符串
private List<String> strings; // 字符串列表
private List<User> users; // 對象列表彤侍,腦補User中包含name和age兩個屬性
}
- 引入springboot
configuration-processor
依賴
<dependency>
<groupId> org.springframework.boot </groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
- 以上就完成了注入的配置
四、Tips
- 普通單元素類型曙博,例如
str
拥刻,可以直接用@Value("${custom.str}")
的方式注入,不用配置@ConfigurationProperties
-
字符串列表或者基本包裝類型列表父泳,直接以英文逗號
,
隔開般哼,不能寫成-
列表形式,至少在1.5版本是這樣的