關(guān)于@Value注入List,Map及設(shè)置默認(rèn)值問題
@Value注入List,Map及設(shè)置默認(rèn)值
注入String
- yml
populate: string: stringValue
- 注入
@Value("${populate.string2:}") // 默認(rèn)值是空字符串“” private String stringV; @Value("${populate.string:null}") // 默認(rèn)值是null private String stringV2; @Value("${populate.string:defaultValue}") // 默認(rèn)值是“defaultValue” private String stringV3;
注入Array
- yml
populate: array: array1,array2,array3
- 注入
@Value("${populate.array:}") // 默認(rèn)值是[] private String[] array; @Value("${populate.array:a1,a2,a3}") // 默認(rèn)值是[a1,a2,a3] private String[] array1;
注入List
- yml
populate: list: list1,list2,list3
- 注入
#{'${populate.list:}'.split(',')
: #{} 內(nèi)是SpEL表達(dá)式,使用 split 函數(shù)指定了分隔符;
${populate.list}
:不指定分隔符則會(huì)默認(rèn)以,
作為分隔符。(可能較低版本的Spring不支持,未驗(yàn)證)
@Value("${populate.list:}") // 默認(rèn)值是空List,{} private List<String> list0; @Value("#{'${populate.list:}'.split(',')}") // 默認(rèn)值是包含一個(gè)空字符串的List {“”} private List<String> list1; @Value("${populate.list:l1,l2,l3}") // 默認(rèn)值是{l1,l2,l3} private List<String> list2; @Value("#{'${populate.list:l1,l2,l3}'.split(',')}") // 默認(rèn)值是{l1,l2,l3} private List<String> list3; @Value("#{'${populate.list:,}'.split(',')}") // 默認(rèn)值是空List,{} private List<String> list4;
注入Map
yml
- key可以但不必被單引號(hào)包圍
- value必須被單引號(hào)包圍
populate: map: "{ 'key1': 'value1', 'key2': 'value2', 'key3': 'value3' }" mapList: "{ key1: 'v11,v12', key2: 'v21,v22', key3: 'v31,v32' }"
- 注入
@Value("#{${populate.map:{}}}") // 默認(rèn)值是null private Map<String,String> map; @Value("#{${populate.map:null}}}") // 默認(rèn)值是null private Map<String, String> map2; @Value("#{${populate.map:{k1:'v1',k2:'v2'}}}") // 默認(rèn)值是{"k1":"v1","k2":"v2"} private Map<String, String> map3; @Value("#{${populate.mapList:{}}}") // 值為{"key1":["v11","v12"],"key2":["v21","v22"],"key3":["v31","v32"]} private Map<String,List<String>> mapList;
${} 與 #{} #{…}
- #{…} 主要用于加載外部屬性文件中的值
- ${…} 用于執(zhí)行SpEl表達(dá)式,并將內(nèi)容賦值給屬性
- #{…} 和 $ {…} 可以混合使用,但是必須#{}外面,${}在里面
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決idea報(bào)錯(cuò) Connot resolve column 的問題
這篇文章主要介紹了解決idea報(bào)錯(cuò) Connot resolve column 的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-02-02Java負(fù)載均衡算法實(shí)現(xiàn)之輪詢和加權(quán)輪詢
網(wǎng)上找了不少負(fù)載均衡算法的資源,都不夠全面,后來自己結(jié)合了網(wǎng)上的一些算法實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于Java負(fù)載均衡算法實(shí)現(xiàn)之輪詢和加權(quán)輪詢的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04Spring Boot 項(xiàng)目啟動(dòng)失敗的解決方案
這篇文章主要介紹了Spring Boot 項(xiàng)目啟動(dòng)失敗的解決方案,幫助大家更好的理解和學(xué)習(xí)使用Spring Boot,感興趣的朋友可以了解下2021-03-03Java 將字符串動(dòng)態(tài)生成字節(jié)碼的實(shí)現(xiàn)方法
本篇文章主要是對(duì)Java將字符串動(dòng)態(tài)生成字節(jié)碼的實(shí)現(xiàn)方法進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-01-01淺析Spring的事務(wù)實(shí)現(xiàn)原理
這篇文章主要為大家詳細(xì)介紹了Spring中事務(wù)實(shí)現(xiàn)的原理,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Spring有一定的幫助,需要的可以參考一下2022-11-11Maven管理多模塊應(yīng)用的統(tǒng)一版本號(hào)實(shí)現(xiàn)
本文主要介紹了Maven管理多模塊應(yīng)用的統(tǒng)一版本號(hào)實(shí)現(xiàn),使用versions-maven-plugin插件和占位符結(jié)合flatten-maven-plugin插件來實(shí)現(xiàn),感興趣的可以了解一下2024-12-12Spring Security如何在Servlet中執(zhí)行
這篇文章主要介紹了Spring Security如何在Servlet中執(zhí)行,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04