開發環境
- spring boot 1.5.9
- jdk 8
先說背景
使用 spring boot 開發應用, 有一個讀取 application.yml 配置的需求,配置項的類型為列表,需要將配置項內容讀取到 Java 類中, 開發過程中遇到無法正確讀取配置內容的問題,遂記錄.
再說干貨
1. application.yml 中配置
spring boot 中默認的 yaml 類庫為 snakeyaml, 目前支持 yaml 1.1 規范, 規范參考地址 YAML 1.1 (2nd Edition)
配置內容如下:
my:
config:
referers:
- id: aaa
referer: http://www.baidu.com
- id: bbb
referer: http://wwww.163.com
2. 相關 Java 類
配置讀取類, 重點如下:
- 多層級配置名稱, 可以使用
@ConfigurationProperties(prefix = "my.config")
- 需要 new 一個空的配置項列表 ArrayList (referers)
- 需要生成該 List 對象的 Getter Setter 方法 (不配置無法讀取數據)
@Service
@ConfigurationProperties(prefix = "my.config")
public class ConfigServiceImpl implements ConfigService {
private static Logger logger = LoggerFactory.getLogger(ConfigServiceImpl.class);
/**
* 配置項列表
*/
private List<Referer> referers = new ArrayList<>();
public List<Referer> getReferers() {
return referers;
}
public void setReferers(List<Referer> referers) {
this.referers = referers;
}
// ... 其它業務方法
}
列表中單個元素對象:
public class Referer {
private String id;
private String referer;
// ... 此處省去getter setter
}
結束語
以上為實際開發中相關內容, 遇到點小坑, 解決后隨手記錄