Spring Boot中優(yōu)雅的獲取yml文件工具類(lèi)
如何在spring boot中優(yōu)雅的獲取.yml文件工具類(lèi)呢
代碼如下:
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文件工具類(lèi)
*/
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工具類(lèi))
- Springboot實(shí)現(xiàn)多線程注入bean的工具類(lèi)操作
- Spring框架JavaMailSender發(fā)送郵件工具類(lèi)詳解
- 兼容Spring Boot 1.x和2.x配置類(lèi)參數(shù)綁定的工具類(lèi)SpringBootBindUtil
- spring boot結(jié)合Redis實(shí)現(xiàn)工具類(lèi)的方法示例
- Spring boot工具類(lèi)靜態(tài)屬性注入及多環(huán)境配置詳解
- Spring獲取ApplicationContext對(duì)象工具類(lèi)的實(shí)現(xiàn)方法
- Spring常用一些工具類(lèi)實(shí)例匯總
相關(guān)文章
Spring boot實(shí)現(xiàn)文件上傳實(shí)例(多文件上傳)
本篇文章主要介紹了Spring boot實(shí)現(xiàn)文件上傳實(shí)例(多文件上傳),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
Java面試官最喜歡問(wèn)的關(guān)鍵字之volatile詳解
這篇文章主要給大家介紹了關(guān)于Java面試官最喜歡問(wèn)的關(guān)鍵字之volatile的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
SpringCloud Zuul和Gateway的實(shí)例代碼(搭建方式)
本文主要介紹了SpringCloudZuul和SpringCloudGateway的簡(jiǎn)單示例,SpringCloudGateway是推薦使用的API網(wǎng)關(guān)解決方案,基于SpringFramework5和ProjectReactor構(gòu)建,具有更高的性能和吞吐量2025-02-02
子類(lèi)繼承父類(lèi)時(shí)構(gòu)造函數(shù)相關(guān)問(wèn)題解析
這篇文章主要介紹了子類(lèi)繼承父類(lèi)時(shí)構(gòu)造函數(shù)相關(guān)問(wèn)題解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
idea配置springboot熱部署終極解決辦法(解決熱部署失效問(wèn)題)
這篇文章主要介紹了idea配置springboot熱部署終極解決辦法(解決熱部署失效問(wèn)題),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-07-07
mybatisPlus中apply的使用以進(jìn)行聯(lián)表等復(fù)雜sql語(yǔ)句詳解
在MyBatis-Plus中,`apply()`方法可以用于添加任意的SQL片段,包括聯(lián)表查詢,使用`apply()`方法的好處是可以直接添加原生的SQL片段,而不受MyBatis-Plus提供的常規(guī)查詢條件構(gòu)建方法的限制,但是,使用`apply()`方法需要注意安全性和性能問(wèn)題2025-03-03
Spring 整合Shiro 并擴(kuò)展使用EL表達(dá)式的實(shí)例詳解
Shiro是一個(gè)輕量級(jí)的權(quán)限控制框架,應(yīng)用非常廣泛。本文的重點(diǎn)是介紹Spring整合Shiro,并通過(guò)擴(kuò)展使用Spring的EL表達(dá)式。需要的朋友可以參考下2018-03-03
springboot使用Thymeleaf報(bào)錯(cuò)常見(jiàn)的幾種解決方案
這篇文章主要介紹了springboot使用Thymeleaf報(bào)錯(cuò)常見(jiàn)的幾種解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11

