开发者

java如何获取yml配置文件工具类

开发者 https://www.devze.com 2024-11-01 10:43 出处:网络 作者: 秋秋秋秋秋雨
目录Java获取yml配置文件工具类引入pom文件创建一个同样名称的类总结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)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消