动态读取properties文件,并且修改其中的属性

注:代码经过测试,确实可以修改properties文件中的属性,但是此属性在文件中的值是没有变化的,只是在项目运行的过程中,值发生了改变,
所以一旦停止项目,以前累计的值就会消失。所以此段代码只适合切换数据源之类,不适合做累计的功能。
==================================================================================
新建一个工具类,此工具类需要引用
<dependency>
    <groupId>commons-configuration</groupId>
    <artifactId>commons-configuration</artifactId>
    <version>1.8</version>
</dependency>
<dependency>
         <groupId>commons-lang</groupId>
         <artifactId>commons-lang</artifactId>
         <version>2.6</version>
</dependency>
/**
 * 2017年10月23日下午10:20:49
 */
package com.jjmc.dcl.util;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
/**
 *
 * @author huangtao
 * 2017年10月23日下午10:20:49
 * dclTask
 * @parameter
 * TODO
 *
 */
public class Config {
    private static PropertiesConfiguration propConfig;

    private static final Config CONFIG = new Config();

    /**
     * 自动保存
     */
    private static boolean autoSave = true;

    private Config() {
    }

    public static Config getInstance(String propertiesFile) {
        //执行初始化 
        init(propertiesFile);
        return CONFIG;
    }

    /**
     * 初始化
     *
     * @param propertiesFile
     * @throws ConfigurationException 
     * @see
     */
    private static void init(String propertiesFile){
        try {
            propConfig = new PropertiesConfiguration(propertiesFile);
            //自动重新加载 
            propConfig.setReloadingStrategy(new FileChangedReloadingStrategy());
            //自动保存 
            propConfig.setAutoSave(autoSave);
        } catch (Exception  e) {
            e.printStackTrace();
        }
    }

    /**
     * 根据Key获得对应的value
     *
     * @param key
     * @return
     * @see
     */
    public Object getValue(String key) {
        return propConfig.getProperty(key);
    }

    /**
     * 设置属性
     *
     * @param key
     * @param value
     * @see
     */
    public void setProperty(String key, String value) {
        propConfig.setProperty(key, value);
    }

}
=================================================================================================
测试类
Config cg = Config.getInstance("messageConfig/messageMinId.properties");
for(int i = 0;i<100;i++){
System.out.println("old mms.statusReport.minID="+cg.getValue("mms.statusReport.minID"));
cg.setProperty("mms.statusReport.minID", String.valueOf(i));
System.out.println("new mms.statusReport.minID="+cg.getValue("mms.statusReport.minID"));
}


posted @ 2017-10-29 20:52  me-ht  阅读(3861)  评论(0编辑  收藏  举报