您好,登錄后才能下訂單哦!
小編給大家分享一下關(guān)于Springboot多種情況yml配置代碼的案例,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
springboot 中各種配置項紀(jì)錄
1. @Value
最早獲取配置文件中的配置的時候,使用的就是這個注解,SpEL表達(dá)式語言。
// 使用起來很簡單 @Value("${config.demo.value:defaultValue}") private String simpleValue;
通常我們配置的時候,不僅僅是一個單獨字段,可能是一組配置,用來組成一個對象。這個時候spring為我們提供了這個注解。
簡單的對象,在yml里也可以很簡單的寫出來。直接把每一個字段寫出即可。
而對復(fù)雜對象,如:list、map等的,就需要查一下資料了,這里簡單記錄一下寫法,直接看代碼。
# 配置示例 config: demo: value: testValue simpleConfig: config: testConfig str1: abc,cde str2: - abc - cde configMap: key1: value1 海賊王: 路飛 simpleConfigs: - config: 羅賓 count: 1 - config: 烏索普 count: 1 - config: 索隆 count: 1 configObjMap: key1: config: value1 key2: config: value2
pojo 對象定義如下:
@Data @ConfigurationProperties(prefix = "config.demo") @Configuration public class ConfigDemo { @Value("${config.demo.value:defaultValue}") private String simpleValue; /**===========簡單對象===========*/ /** * 對象 */ private SimpleConfig simpleConfig; /** * 字符串?dāng)?shù)組1 */ private List<String> str1; /** * 字符串?dāng)?shù)組1 */ private List<String> str2; /** * 鍵值對 */ private Map<String, String> configMap; /** * ===========多個復(fù)雜對象========== */ /** * 對象集合 */ private List<SimpleConfig> simpleConfigs; /** * 對象作為map值 */ private Map<String, SimpleConfig> configObjMap; @Data public static class SimpleConfig { // 注意:這里需要內(nèi)部類是public的,要不然注入的時候會出錯。 private String config; private int count; } }
以上就是各種情況的書寫。其實也不難,list 就增加 - 來作為單個對象標(biāo)識,而map就直接寫key即可。
而spring在存儲properties的時候是怎么處理的呢,我們可以斷點一下 PropertyPlaceholderHelper,在這里我們可以看到存儲各種配置的source如下圖:
底層都是通過一個ResourceReloadingMap來存儲的,那么存儲list的時候,是什么結(jié)構(gòu)呢,如下:
// 存儲的時候是這樣的: simpleConfigs[0].config=configValue simpleConfigs[0].count=countValue ...
所以最終都是通過鍵值對的方式,只是對應(yīng)的格式,spring可以解析成對應(yīng)的樣子而已。
看完了這篇文章,相信你對關(guān)于Springboot多種情況yml配置代碼的案例有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。