如何基于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
*/
publicstaticMapgetYmlByFileName(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);
Mapparam=(Map)obj;
for(Map.Entryentry: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{
Mapmap=getYmlByFileName(null);
if(map==null)returnnull;
returnmap.get(key);
}
/**
*遍历yml文件,获取map集合
*@paramkey_str
*@paramobj
*@parami
*@paramkeys
*@return
*/
publicstaticMapforEachYaml(Stringkey_str,Mapobj,inti,String...keys){
for(Map.Entryentry: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{
MapymlByFileName=getYmlByFileName(bootstrap_file,"spring");
Set>entries=ymlByFileName.entrySet();
for(Map.Entryentry:entries){
System.out.println(entry.getKey()+"==="+entry.getValue());
}
System.out.println(getApplicationName());
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。