java如何获取yml配置文件工具类
目录
- Java获取yml配置文件工具类
- 引入pom文件
- 创建一个同样名称的类
- 总结
java获取yml配置文件工具类
引入pom文件
<!--读取yml文件--> <dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> <version>1.26</version> </dependency>
创建一个同样名称的类
然后复制过去就好了
package com.edgedo.utils; import jodd.util.StringUtil; import org.yaml.snakeyaml.Yaml; import java.io.InputStream; import java.util.HashMap; import java.util.Map; /** * yml文件工具类 */ pu编程blic class YmlUtils { // 配置文件的名称 private static String bootstrap_file = "application-timetask.yml"; private static Map<String,String> result = new HashMap<>(); /** * 根据文件名获取yml的文件内容 * @return */ public static Map<String,String> getYmlByFileName(String file){ result = new HashMap<>(); if(file == null){ file = bootstrap_file; } // 注意这里的config,看你实际情况来 InputStream in = YmlUtils.class.getClassLoader().getwww.devze.comResourceAsStream("config/"+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; } /** * 根据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 = ""; //这是是对key_str判空,如果没有util工具类可以自己改一下,key_str不等于空就行了 ZLBsZDMXbif(StringUtil.isNotBlank(key_str)){ str_new = key_str+ "."+key; }else{ str_new = kehttp://www.devze.comy; } if(val instanceof Map){ forEachYaml(str_new,(Map<String, Object>) val); }else{ result.put(str_new,val.toString()); } } return result; } public static void main(String[] args) { System.out.println(getValue("time编程客栈task.Heartbeat.cron.timingHeartbeat")); } }
输出:0 */1 * * * ?
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。
精彩评论