動態讀取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"));
}



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM