时间1024 2018-04-20 04:09 采纳率: 0%
浏览 985
已采纳

java工具类中的 配置参数 怎么配置多环境?

问题:
spring 配置多环境,在加载的时候可以配置多环境,使用不同的 数据库地址
但是,如果一个静态工具类中引用 指定的配置文件时,配置文件就无法配置多环境了。
如下:

 public class ConfigUtil {
    public ConfigUtil(){}
    private static Properties props = new Properties(); 
    static{
        try {
            props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static String getValue(String key){
        return props.getProperty(key);
    }

    public static void updateProperties(String key,String value) {    
            props.setProperty(key, value); 
    } 
}

config.properties

getui.user.appId=4sTgoIu4yr5UXqGBF5
getui.user.appKey=c0e4WQsC1Ge4PopNC8
getui.user.masterSecret=jMOq1168doVGl73UD9
getui.member.appId=ZhVkZA6Zf8Mp6ct2E6
getui.member.appKey=thC7Dmjo5LyPHNDBs0T5
getui.member.masterSecret=IQUgrA4ARt0pd2gOBX6

config.test.properties

getui.user.appId=4sTgoIu4yr5qGBF5
getui.user.appKey=c0e4WQsC14PopNC8
getui.user.masterSecret=jMOq11oV73UD9
getui.member.appId=ZhVkZA6Zf8Mp6ct2E6
getui.member.appKey=thC7Dmjo5LyPHNDBs0T5
getui.member.masterSecret=IQUgrA4ARt0pd2gOBX6

这种情况就无法选择 不同的配置文件

  • 写回答

6条回答

  • icyxing 2018-04-20 06:01
    关注

    提供一个思路:
    配置文件的名字可以使用系统环境变量来覆盖默认值,这样在启动时提供jvm启动参数或者修改系统环境变量,都可以使用不同配置文件

    示例:

        public static class ConfigUtil {
            public ConfigUtil(){}
            private static Properties props = new Properties(); 
            private static final String DEFAULT_PROPERTIES = "config.properties";
            static{
                try {
                    String fileName = System.getProperty("systemname.config.properties");
                    if (StringUtils.isBlank(fileName)) {
                        fileName = DEFAULT_PROPERTIES;
                    }
                    props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName));
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            public static String getValue(String key){
                return props.getProperty(key);
            }
    
            public static void updateProperties(String key,String value) {    
                    props.setProperty(key, value); 
            } 
        }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog