springboot讀取resource配置文件生成容器對象的示例代碼
背景:需要對地區(qū)和語言做映射,給一個映射表,通過映射來確定最后保留的是哪個值??梢詫懙綌?shù)據(jù)庫,但是數(shù)量比較小,直接放到配置文件讀取即可。
1、使用@ConfigurationProperties直接讀取配置文件中的屬性
1、在application.properties中配置
# 引入application-language.yml 這個文件 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<>(); } }
此時你就可以使用了,但是有個問題,他會默認(rèn)把…、漢字作為key的給過濾掉,顯然不是我們要的效果。
2、直接使用Resource讀取配置文件,然后使用YamlMapFactoryBean獲取map對象
@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; } }
然后就能從容器中獲得該對象進(jìn)行邏輯操作了。
到此這篇關(guān)于springboot讀取resource配置文件生成容器對象的文章就介紹到這了,更多相關(guān)springboot讀取resource配置文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Java?Executors創(chuàng)建線程池的9種方法
文章主要介紹了?Java?中Executors類創(chuàng)建線程池的?9?種方法,每種方法都詳細(xì)闡述了實現(xiàn)原理、源代碼分析、參數(shù)解釋、實現(xiàn)過程、特性和使用場景,感興趣的小伙伴跟著小編一起來看看吧2024-11-11Java BeanMap實現(xiàn)Bean與Map的相互轉(zhuǎn)換
這篇文章主要介紹了利用BeanMap進(jìn)行對象與Map的相互轉(zhuǎn)換,通過net.sf.cglib.beans.BeanMap類中的方法來轉(zhuǎn)換,效率極高,本文給大家分享實現(xiàn)代碼,感興趣的朋友一起看看吧2022-11-11如何解決freemarker靜態(tài)化生成html頁面亂碼的問題
這篇文章主要介紹了如何解決freemarker靜態(tài)化生成html頁面亂碼的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01Struts2源碼分析之ParametersInterceptor攔截器
這篇文章主要介紹了Struts2源碼分析之ParametersInterceptor攔截器,ParametersInterceptor攔截器其主要功能是把ActionContext中的請求參數(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