栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

如何基于JAVA读取yml配置文件指定key内容

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何基于JAVA读取yml配置文件指定key内容

这篇文章主要介绍了如何基于JAVA读取yml配置文件指定key内容,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

先引入需要的依赖


    
      org.yaml
      snakeyaml
      1.23
    

读取YML文件工具类的代码

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.ResourceUtils;
import org.yaml.snakeyaml.Yaml;

import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;


public class YmlUtils {

  private static final Logger LOGGER = LoggerFactory.getLogger(YmlUtils.class);

  private static String bootstrap_file = "classpath:application-test.yml";

  private static Map result = new HashMap<>();

  
  public static Map getYmlByFileName(String filePath, String... keys) {
    result = new HashMap<>();
    if(filePath == null) filePath = bootstrap_file;
    InputStream in = null;
    try {
      File file = ResourceUtils.getFile(filePath);
      in = new BufferedInputStream(new FileInputStream(file));
      Yaml props = new Yaml();
      Object obj = props.loadAs(in,Map.class);
      Map param = (Map) obj;

      for(Map.Entry entry:param.entrySet()){
 String key = entry.getKey();
 Object val = entry.getValue();
 if (keys.length != 0 && !keys[0].equals(key)){
   continue;
 }
 if(val instanceof Map){
   forEachYaml(key,(Map) val, 1, keys);
 }else{
   result.put(key, val.toString());
 }
      }
      return result;
    } catch (FileNotFoundException e) {
      LOGGER.error(e.getMessage(),e);
    }finally {
      if (in != null){
 try {
   in.close();
 } catch (IOException e) {
   LOGGER.error(e.getMessage(),e);
 }
      }
    }
    return null;
  }

  
  public static String getValue(String key) throws FileNotFoundException {
    Map map = getYmlByFileName(null);
    if(map==null)return null;
    return map.get(key);
  }


  
  public static Map forEachYaml(String key_str,Map obj, int i, String... keys){
    for(Map.Entry entry:obj.entrySet()){
      String key = entry.getKey();
      Object val = entry.getValue();
      if (keys.length > i && !keys[i].equals(key)){
 continue;
      }
      String str_new = "";
      if(StringUtils.isNotEmpty(key_str)){
 str_new = key_str+ "."+key;
      }else{
 str_new = key;
      }
      if(val instanceof Map){
 forEachYaml(str_new,(Map) val, ++i, keys);
 i--;
      }else{

 result.put(str_new,val.toString());
      }
    }

    return result;
  }


  
  public static String getApplicationName() throws FileNotFoundException {
    return getYmlByFileName(bootstrap_file).get("server.port");
  }

  
  public static String getApplicationName1() throws FileNotFoundException {
    String name = getYmlByFileName(bootstrap_file).get("spring.application.name");
    return name + "center";
  }

  public static void main(String[] args) throws FileNotFoundException {

    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());
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/135502.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号