關(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)文章
Java線程池高效并發(fā)編程實(shí)戰(zhàn)技巧
線程池是一種線程管理機(jī)制,它預(yù)先創(chuàng)建一定數(shù)量的線程并放入池中,當(dāng)需要執(zhí)行任務(wù)時(shí),從池中獲取空閑線程來(lái)執(zhí)行任務(wù),任務(wù)完成后線程不銷毀而是返回池中等待下一次任務(wù),這篇文章給大家介紹Java線程池高效并發(fā)編程實(shí)戰(zhàn)技巧,感興趣的朋友跟隨小編一起看看吧2026-02-02
Java中負(fù)數(shù)的絕對(duì)值竟然不一定是正數(shù)
這篇文章主要介紹了Java中負(fù)數(shù)的絕對(duì)值竟然不一定是正數(shù),文中給大家提到Java 中怎么把負(fù)數(shù)轉(zhuǎn)換為正數(shù),需要的朋友可以參考下2021-07-07
Java生成Echarts表圖的2種實(shí)現(xiàn)方案
這篇文章主要給大家介紹了關(guān)于Java生成Echarts表圖的2種實(shí)現(xiàn)方案,ECharts是一款功能非常強(qiáng)大的JavaScript圖表庫(kù),文中通過代碼實(shí)例介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09
Java實(shí)現(xiàn)Word/Excel/TXT轉(zhuǎn)PDF的方法
這篇文章主要介紹了Java實(shí)現(xiàn)Word/Excel/TXT轉(zhuǎn)PDF的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
SpringCloud?GateWay網(wǎng)關(guān)示例代碼詳解
這篇文章主要介紹了SpringCloud?GateWay網(wǎng)關(guān),Spring?cloud?Gateway的功能很多很強(qiáng)大,文中提到了Spring?Cloud?Gateway中幾個(gè)重要的概念,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-04-04
jpa使用manyToOne(opntional=true)踩過的坑及解決
這篇文章主要介紹了jpa使用manyToOne(opntional=true)踩過的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
springBoot如何動(dòng)態(tài)加載資源文件
這篇文章主要介紹了springBoot如何動(dòng)態(tài)加載資源文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
使用apache 的FileUtils處理文件的復(fù)制等操作方式
這篇文章主要介紹了使用apache 的FileUtils處理文件的復(fù)制等操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07

