Spring Boot中优雅的获取yml文件工具类
如何在springboot中优雅的获取.yml文件工具类呢
代码如下:
packagecom.common.base.utils.base;
importcom.common.base.generator.ResourceManager;
importorg.yaml.snakeyaml.Yaml;
importjava.io.InputStream;
importjava.util.HashMap;
importjava.util.Map;
/**
*yml文件工具类
*/
publicclassYmlUtils{
privatestaticStringbootstrap_file="bootstrap.yml";
privatestaticMapresult=newHashMap<>();
/**
*根据文件名获取yml的文件内容
*@return
*/
publicstaticMapgetYmlByFileName(Stringfile){
result=newHashMap<>();
if(file==null)
file=bootstrap_file;
InputStreamin=ResourceManager.class.getClassLoader().getResourceAsStream(file);
Yamlprops=newYaml();
Objectobj=props.loadAs(in,Map.class);
Mapparam=(Map)obj;
for(Map.Entryentry:param.entrySet()){
Stringkey=entry.getKey();
Objectval=entry.getValue();
if(valinstanceofMap){
forEachYaml(key,(Map)val);
}else{
result.put(key,val.toString());
}
}
returnresult;
}
/**
*根据key获取值
*@paramkey
*@return
*/
publicstaticStringgetValue(Stringkey){
Mapmap=getYmlByFileName(null);
if(map==null)returnnull;
returnmap.get(key);
}
/**
*遍历yml文件,获取map集合
*@paramkey_str
*@paramobj
*@return
*/
publicstaticMapforEachYaml(Stringkey_str,Mapobj){
for(Map.Entryentry:obj.entrySet()){
Stringkey=entry.getKey();
Objectval=entry.getValue();
Stringstr_new="";
if(StringUtils.isNotNull(key_str)){
str_new=key_str+"."+key;
}else{
str_new=key;
}
if(valinstanceofMap){
forEachYaml(str_new,(Map)val);
}else{
result.put(str_new,val.toString());
}
}
returnresult;
}
/**
*获取bootstrap.yml的name
*@return
*/
publicstaticStringgetApplicationName(){
returngetYmlByFileName(bootstrap_file).get("spring.application.name");
}
/**
*获取bootstrap.yml的name
*@return
*/
publicstaticStringgetApplicationName1(){
Stringname=getYmlByFileName(bootstrap_file).get("spring.application.name");
returnname+"center";
}
publicstaticvoidmain(String[]args){
System.out.println(getApplicationName());
}
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接