zoukankan      html  css  js  c++  java
  • springboot读取 yaml或者properties文件几种方式

    方法一.可以专门写一个工具类读取所有非application的文件(单列模式)(用一个Map来保存所有配置文件)

          类工具代码如下:

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Properties;
    
    public class ConfigPropertyUtil {
    
        private static final Logger logger = LoggerFactory.getLogger(ConfigPropertyUtil.class);
        private static Map<String,ConfigPropertyUtil> configPropertyMap = new HashMap<String,ConfigPropertyUtil>();
        private Properties properties = null;
    
        public static ConfigPropertyUtil getInstance(String propertyFileName){
            if(!configPropertyMap.containsKey(propertyFileName)){
                synchronized (ConfigPropertyUtil.class){
                    if(!configPropertyMap.containsKey(propertyFileName)){
                        ConfigPropertyUtil configPropertyUtil = new ConfigPropertyUtil(propertyFileName);
                        configPropertyMap.put(propertyFileName, configPropertyUtil);
                    }
                }
            }
            return configPropertyMap.get(propertyFileName);
        }
    
        private ConfigPropertyUtil(String propertyFileName){
            init(propertyFileName);
        }
    
        private void init(String propertyFileName){
            properties = new Properties();
            InputStream inputStream = ConfigPropertyUtil.class.getClassLoader().getResourceAsStream(propertyFileName);
            if(inputStream != null) {
                try {
                    properties.load(new InputStreamReader(inputStream,ConstantUtil.CHARSET_VALUE));
                } catch (IOException e) {
                    logger.error(String.format("config.properties file not found"));
                    e.printStackTrace();
                }
            }
        }
    
        public String getPropertyVal(String key){
            return this.properties.getProperty(key);
        }
    
        public Integer getIntPropertyVal(String key){
            return Integer.parseInt(this.getPropertyVal(key));
        }
    
    }

    方法二、@Value注解读取方式

    方法三、Environment读取方式(所有加载出来的配置都可以通过Environment注入获取到。只在加载进入java的classpath路径下)

    方法四、@PropertySource+@ConfigurationProperties注解读取方式

    方法五、@PropertySource+@Value注解读取方式

    参考:https://www.jianshu.com/p/982e36f42c67

  • 相关阅读:
    JS随笔
    tp5 redis 单例模式 转载
    分享我编程工作经历及对软件开发前景的看法
    redis详解(一)-- 概述
    redis详解(二)-- 数据类型详解
    redis详解(四)-- 高可用分布式集群
    redis详解(三)
    新工科平台
    关于Nginx的负载均衡
    微信退款回调
  • 原文地址:https://www.cnblogs.com/yangcao/p/12073322.html
Copyright © 2011-2022 走看看