时间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条)

报告相同问题?

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装