Spring中@Value讀取properties作為map或list的操作
Spring讀取properties作為map:
properties文件中:
blog-top-links={home:"/home"} blog-list=1,2,3
map的寫法和json差不多,但是應(yīng)該不支持嵌套,沒有嘗試。
key加不加引號(hào)都可以,value加雙引號(hào)單引號(hào)都可以,但是當(dāng)key中有”-“時(shí)就必須加引號(hào),例如key為:about-me時(shí),就必須加引號(hào)否則解析失敗
list的寫法和數(shù)組差不多,可以自定義分隔符,在java中分割即可
配置類中:
@Component @ConfigurationProperties @PropertySource("properties文件路徑") public class BlogConfig { @Value("#{${blog-top-links}}") private Map<String, String> topLinks; @Value("#{'${blog-list}'.split(',')}") private List<Integer> list; ... 省略get/set 實(shí)際不能省略,否則雖然能啟動(dòng)不報(bào)錯(cuò),但是無法獲取到值 }
獲取map的方法:
@Value("#{${blog-top-links}}")
使用#{${key}}的方式
獲取list的方法:
@Value("#{'${blog-list}'.split(',')}")
使用@Value(“#{‘${key}'.split(‘,')}”)的方式
split(‘,')只以','為分隔符,也可以換成別的
當(dāng)配置文件中沒有key時(shí),也可以使用key:default_value的方法設(shè)置默認(rèn)值
@Value注入map、List
yaml格式
@Value("#{'${list}'.split(',')}") private List<String> list; @Value("#{${maps}}") private Map<String,String> maps; @Value("#{${redirectUrl}}") private Map<String,String> redirectUrl;
配置文件
list: topic1,topic2,topic3 maps: "{key1: 'value1', key2: 'value2'}" redirectUrl: "{sso_client_id: '${id}',sso_client_secret: '${secret}',redirect_url: '${client.main.url.default}'}"
注意上面的map解析中,一定要用"“把map所對(duì)應(yīng)的value包起來,要不然解析會(huì)失敗,導(dǎo)致不能轉(zhuǎn)成 Map<String,String>
因?yàn)閥aml語法中如果一個(gè)值以 “{” 開頭, YAML 將認(rèn)為它是一個(gè)字典, 所以我們必須引用它必須用”"
http://www.ansible.com.cn/docs/YAMLSyntax.html
yaml寫法注意:
字符串默認(rèn)不用加上單引號(hào)或者雙引號(hào)
“”
:雙引號(hào);不會(huì)轉(zhuǎn)義字符串里面的特殊字符;特殊字符會(huì)作為本身想表示的意思
name: “zhangsan \n lisi”:輸出;zhangsan 換行 lisi
‘'
:單引號(hào);會(huì)轉(zhuǎn)義特殊字符,特殊字符最終只是一個(gè)普通的字符串?dāng)?shù)據(jù)
name
: ‘zhangsan \n lisi':輸出;zhangsan \n lisi
properties格式
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
JDBC插入數(shù)據(jù)返回?cái)?shù)據(jù)主鍵代碼實(shí)例
這篇文章主要介紹了JDBC插入數(shù)據(jù)返回?cái)?shù)據(jù)主鍵代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11Spring Web項(xiàng)目spring配置文件隨服務(wù)器啟動(dòng)時(shí)自動(dòng)加載
這篇文章主要介紹了Spring Web項(xiàng)目spring配置文件隨服務(wù)器啟動(dòng)時(shí)自動(dòng)加載,加載spring的配置文件,并且只加載一次,從而提高程序效率。具體內(nèi)容詳情大家通過本文一起學(xué)習(xí)吧2018-01-01springboot+Quartz實(shí)現(xiàn)任務(wù)調(diào)度的示例代碼
本篇文章主要介紹了springboot + Quartz 實(shí)現(xiàn)任務(wù)調(diào)度的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02SpringBoot使用榛子云實(shí)現(xiàn)手機(jī)短信發(fā)送驗(yàn)證碼
發(fā)送驗(yàn)證碼主要用于驗(yàn)證用戶手機(jī)的合法性及敏感操作的身份驗(yàn)證,本文使用了SpringBoot實(shí)現(xiàn),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05Java實(shí)現(xiàn)Random隨機(jī)數(shù)生成雙色球號(hào)碼
使用Random類是Java中用于生成隨機(jī)數(shù)的標(biāo)準(zhǔn)類,本文主要介紹了Java實(shí)現(xiàn)Random隨機(jī)數(shù)生成雙色球號(hào)碼,具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11Java中Map與對(duì)象之間互相轉(zhuǎn)換的幾種常用方式
在Java中將對(duì)象和Map相互轉(zhuǎn)換是常見的操作,可以通過不同的方式實(shí)現(xiàn)這種轉(zhuǎn)換,下面這篇文章主要給大家介紹了關(guān)于Java中Map與對(duì)象之間互相轉(zhuǎn)換的幾種常用方式,需要的朋友可以參考下2024-01-01Java整合Jackson實(shí)現(xiàn)反序列化器流程
Jackson是一個(gè)開源的Java序列化和反序列化工具,可以將Java對(duì)象序列化為XML或JSON格式的字符串,以及將XML或JSON格式的字符串反序列化為Java對(duì)象。由于其使用簡單,速度較快,且不依靠除JDK外的其他庫,被眾多用戶所使用2023-01-01MybatisPlus整合Flowable出現(xiàn)的坑及解決
這篇文章主要介紹了MybatisPlus整合Flowable出現(xiàn)的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03