Spring Boot中優(yōu)雅的獲取yml文件工具類
如何在spring boot
中優(yōu)雅的獲取.yml
文件工具類呢
代碼如下:
package com.common.base.utils.base; import com.common.base.generator.ResourceManager; import org.yaml.snakeyaml.Yaml; import java.io.InputStream; import java.util.HashMap; import java.util.Map; /** * yml文件工具類 */ public class YmlUtils { private static String bootstrap_file = "bootstrap.yml"; private static Map<String,String> result = new HashMap<>(); /** * 根據(jù)文件名獲取yml的文件內(nèi)容 * @return */ public static Map<String,String> getYmlByFileName(String file){ result = new HashMap<>(); if(file == null) file = bootstrap_file; InputStream in = ResourceManager.class.getClassLoader().getResourceAsStream(file); Yaml props = new Yaml(); Object obj = props.loadAs(in,Map.class); Map<String,Object> param = (Map<String, Object>) obj; for(Map.Entry<String,Object> entry:param.entrySet()){ String key = entry.getKey(); Object val = entry.getValue(); if(val instanceof Map){ forEachYaml(key,(Map<String, Object>) val); }else{ result.put(key,val.toString()); } } return result; } /** * 根據(jù)key獲取值 * @param key * @return */ public static String getValue(String key){ Map<String,String> map = getYmlByFileName(null); if(map==null)return null; return map.get(key); } /** * 遍歷yml文件,獲取map集合 * @param key_str * @param obj * @return */ public static Map<String,String> forEachYaml(String key_str,Map<String, Object> obj){ for(Map.Entry<String,Object> entry:obj.entrySet()){ String key = entry.getKey(); Object val = entry.getValue(); String str_new = ""; if(StringUtils.isNotNull(key_str)){ str_new = key_str+ "."+key; }else{ str_new = key; } if(val instanceof Map){ forEachYaml(str_new,(Map<String, Object>) val); }else{ result.put(str_new,val.toString()); } } return result; } /** * 獲取bootstrap.yml的name * @return */ public static String getApplicationName(){ return getYmlByFileName(bootstrap_file).get("spring.application.name"); } /** * 獲取bootstrap.yml的name * @return */ public static String getApplicationName1(){ String name = getYmlByFileName(bootstrap_file).get("spring.application.name"); return name + "center"; } public static void main(String[] args) { System.out.println(getApplicationName()); } }
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
- 淺談HBase在SpringBoot項(xiàng)目里的應(yīng)用(含HBaseUtil工具類)
- Springboot實(shí)現(xiàn)多線程注入bean的工具類操作
- Spring框架JavaMailSender發(fā)送郵件工具類詳解
- 兼容Spring Boot 1.x和2.x配置類參數(shù)綁定的工具類SpringBootBindUtil
- spring boot結(jié)合Redis實(shí)現(xiàn)工具類的方法示例
- Spring boot工具類靜態(tài)屬性注入及多環(huán)境配置詳解
- Spring獲取ApplicationContext對(duì)象工具類的實(shí)現(xiàn)方法
- Spring常用一些工具類實(shí)例匯總
相關(guān)文章
Spring事務(wù)@Transactional注解四種不生效案例場(chǎng)景分析
這篇文章主要為大家介紹了Spring事務(wù)@Transactional注解四種不生效的案例場(chǎng)景示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07springboot 啟動(dòng)如何排除某些bean的注入
這篇文章主要介紹了springboot 啟動(dòng)如何排除某些bean的注入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08Java多線程的原子性,可見(jiàn)性,有序性你都了解嗎
這篇文章主要為大家詳細(xì)介紹了Java多線程的原子性,可見(jiàn)性,有序性,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03詳解maven中profiles使用實(shí)現(xiàn)
本文主要介紹了maven中profiles使用實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02java調(diào)用未知類的指定方法簡(jiǎn)單實(shí)例
這篇文章介紹了java調(diào)用未知類的指定方法簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下2013-09-09Java 中的CharArrayReader 介紹_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
CharArrayReader 是字符數(shù)組輸入流。它和ByteArrayInputStream類似,只不過(guò)ByteArrayInputStream是字節(jié)數(shù)組輸入流,而CharArray是字符數(shù)組輸入流。CharArrayReader 是用于讀取字符數(shù)組,它繼承于Reader2017-05-05