如何基于JAVA读取yml配置文件指定key内容
这篇文章主要介绍了如何基于JAVA读取yml配置文件指定key内容,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
先引入需要的依赖
org.yaml snakeyaml 1.23
读取YML文件工具类的代码
importorg.apache.commons.lang3.StringUtils; importorg.slf4j.Logger; importorg.slf4j.LoggerFactory; importorg.springframework.util.ResourceUtils; importorg.yaml.snakeyaml.Yaml; importjava.io.*; importjava.util.HashMap; importjava.util.Map; importjava.util.Set; /** *@authorhunmeng *@create2020-01-1020:34 */ publicclassYmlUtils{ privatestaticfinalLoggerLOGGER=LoggerFactory.getLogger(YmlUtils.class); privatestaticStringbootstrap_file="classpath:application-test.yml"; privatestaticMapresult=newHashMap<>(); /** *根据文件名获取yml的文件内容 *@paramfilePath *@paramkeys第一个参数对应第一个key,第二个参数对应第二个key比如spring.name下的所有就是两个参数、 *getYmlByFileName(bootstrap_file,"spring","name"); *@return */ publicstaticMap getYmlByFileName(StringfilePath,String...keys){ result=newHashMap<>(); if(filePath==null)filePath=bootstrap_file; InputStreamin=null; try{ Filefile=ResourceUtils.getFile(filePath); in=newBufferedInputStream(newFileInputStream(file)); Yamlprops=newYaml(); Objectobj=props.loadAs(in,Map.class); Map param=(Map )obj; for(Map.Entry entry:param.entrySet()){ Stringkey=entry.getKey(); Objectval=entry.getValue(); if(keys.length!=0&&!keys[0].equals(key)){ continue; } if(valinstanceofMap){ forEachYaml(key,(Map )val,1,keys); }else{ result.put(key,val.toString()); } } returnresult; }catch(FileNotFoundExceptione){ LOGGER.error(e.getMessage(),e); }finally{ if(in!=null){ try{ in.close(); }catch(IOExceptione){ LOGGER.error(e.getMessage(),e); } } } returnnull; } /** *根据key获取值 *@paramkey *@return */ publicstaticStringgetValue(Stringkey)throwsFileNotFoundException{ Map map=getYmlByFileName(null); if(map==null)returnnull; returnmap.get(key); } /** *遍历yml文件,获取map集合 *@paramkey_str *@paramobj *@parami *@paramkeys *@return */ publicstaticMap forEachYaml(Stringkey_str,Map obj,inti,String...keys){ for(Map.Entry entry:obj.entrySet()){ Stringkey=entry.getKey(); Objectval=entry.getValue(); if(keys.length>i&&!keys[i].equals(key)){ continue; } Stringstr_new=""; if(StringUtils.isNotEmpty(key_str)){ str_new=key_str+"."+key; }else{ str_new=key; } if(valinstanceofMap){ forEachYaml(str_new,(Map )val,++i,keys); i--; }else{ result.put(str_new,val.toString()); } } returnresult; } /** *获取bootstrap.yml的name *@return */ publicstaticStringgetApplicationName()throwsFileNotFoundException{ returngetYmlByFileName(bootstrap_file).get("server.port"); } /** *获取bootstrap.yml的name *@return */ publicstaticStringgetApplicationName1()throwsFileNotFoundException{ Stringname=getYmlByFileName(bootstrap_file).get("spring.application.name"); returnname+"center"; } publicstaticvoidmain(String[]args)throwsFileNotFoundException{ Map ymlByFileName=getYmlByFileName(bootstrap_file,"spring"); Set >entries=ymlByFileName.entrySet(); for(Map.Entry entry:entries){ System.out.println(entry.getKey()+"==="+entry.getValue()); } System.out.println(getApplicationName()); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。