springboot讀取resource配置文件生成容器對(duì)象的示例代碼
背景:需要對(duì)地區(qū)和語言做映射,給一個(gè)映射表,通過映射來確定最后保留的是哪個(gè)值。可以寫到數(shù)據(jù)庫,但是數(shù)量比較小,直接放到配置文件讀取即可。
1、使用@ConfigurationProperties直接讀取配置文件中的屬性
1、在application.properties中配置
# 引入application-language.yml 這個(gè)文件 spring.profiles.include=language
2、application-language.yml 文件信息
language-mapping: ...: 其他 Cantonese: 粵語 Chinese: 普通話 Danish: 丹麥語 Mende西班牙語: 西班牙語 Mongolian: 蒙古語 阿拉伯語: 阿拉伯語 安徽方言: 安徽方言 保加利亞語: 保加利亞語
3、便攜配置類注入到容器中
@Configuration public class YmlMappingConfiguration { @Bean("languageMapping") @ConfigurationProperties("language-mapping") public Map<String,String> initLanguageMapping(){ return new HashMap<>(); } }
此時(shí)你就可以使用了,但是有個(gè)問題,他會(huì)默認(rèn)把…、漢字作為key的給過濾掉,顯然不是我們要的效果。
2、直接使用Resource讀取配置文件,然后使用YamlMapFactoryBean獲取map對(duì)象
@Configuration public class YmlMappingConfiguration { @Bean("languageMapping") public Map<String,String> initLanguageMapping2(){ final Resource resource = new ClassPathResource("application-language.yml"); final YamlMapFactoryBean factoryBean = new YamlMapFactoryBean(); factoryBean.setResources(resource); final Map<String, Object> object = factoryBean.getObject(); final HashMap<String, String> languageMappingFormat = new LinkedHashMap<>(); Map<String, String>languageMapping=(HashMap)object.getOrDefault("language-mapping", new HashMap<String, String>()); for (Map.Entry<String,String>entry:languageMapping.entrySet()){ final String trimKey = StringUtils.trimToNull(entry.getKey()); final String trimVal = StringUtils.trimToNull(entry.getValue()); if(trimKey!=null && trimVal!=null){ languageMappingFormat.put(trimKey,trimVal); } } return languageMappingFormat; } }
然后就能從容器中獲得該對(duì)象進(jìn)行邏輯操作了。
到此這篇關(guān)于springboot讀取resource配置文件生成容器對(duì)象的文章就介紹到這了,更多相關(guān)springboot讀取resource配置文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Java?Executors創(chuàng)建線程池的9種方法
文章主要介紹了?Java?中Executors類創(chuàng)建線程池的?9?種方法,每種方法都詳細(xì)闡述了實(shí)現(xiàn)原理、源代碼分析、參數(shù)解釋、實(shí)現(xiàn)過程、特性和使用場(chǎng)景,感興趣的小伙伴跟著小編一起來看看吧2024-11-11JavaWeb實(shí)現(xiàn)壓縮多個(gè)文件并下載實(shí)例詳解
本文通過實(shí)例代碼給大家講解了javaweb實(shí)現(xiàn)壓縮多個(gè)文件并下載功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-07-07Java BeanMap實(shí)現(xiàn)Bean與Map的相互轉(zhuǎn)換
這篇文章主要介紹了利用BeanMap進(jìn)行對(duì)象與Map的相互轉(zhuǎn)換,通過net.sf.cglib.beans.BeanMap類中的方法來轉(zhuǎn)換,效率極高,本文給大家分享實(shí)現(xiàn)代碼,感興趣的朋友一起看看吧2022-11-11Activiti如何動(dòng)態(tài)獲取流程圖過程詳解
這篇文章主要介紹了Activiti如何動(dòng)態(tài)獲取流程圖過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03如何解決freemarker靜態(tài)化生成html頁面亂碼的問題
這篇文章主要介紹了如何解決freemarker靜態(tài)化生成html頁面亂碼的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01Struts2源碼分析之ParametersInterceptor攔截器
這篇文章主要介紹了Struts2源碼分析之ParametersInterceptor攔截器,ParametersInterceptor攔截器其主要功能是把ActionContext中的請(qǐng)求參數(shù)設(shè)置到ValueStack中,,需要的朋友可以參考下2019-06-06一文詳解前端和后端的數(shù)據(jù)是如何連接的(基于Spring?Boot、Django或Node.js)
這篇文章主要介紹了前端和后端的數(shù)據(jù)是如何連接的相關(guān)資料,文中通過示例介紹的非常詳細(xì),舉例講解的是基于Spring?Boot、Django或Node.js,需要的朋友可以參考下2025-01-01