对静态文件持久化的第二种解决方案
把配置信息,存储在配置的Bean中,再把Bean以集合的形式存储于Map当中,再将Map转成Json字符串,存储于集合当中。
package com.vvvv.musicsns.util;
import com.google.gson.reflect.TypeToken;
import com.vvvv.musicsns.bean.ConfigBean;
import com.vvvv.musicsns.config.FinalConfig;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.LoggerFactory;
import java.lang.reflect.Type;
protected static Logger logger = (Logger) LoggerFactory.getLogger(ConfigUtil.class);
private static ConfigUtil configUtil = null;
* config json string,converted from Map<String,ConfigBean<T>>
private String configJson =null;
private Map<String,ConfigBean> configBeanMap = new HashMap<String, ConfigBean>();
private ConfigUtil(String configJson){
public static String getConfigFilePath(){
if ("\\".equals(File.separator)){
configFilePath = configFilePath.replace("%20" , " ");
}else if ( "/".equals(File.separator)){
configFilePath = "/"+ configFilePath.replace("%20" , " ");
* get configJson string , sington
public static String getConfigJson() {
* set configJson string to config file
* @param configJson 配置的json字符串
public static Boolean setConfigJson(String configJson) {
String filePath = getConfigFilePath();
configUtil = initConfigUtil();
configUtil.configJson = configJson;
Boolean flag = FileUtil.writeString2File(filePath, configJson);
* get config bean Map<String,ConfigBean<T>> ,such as: <configBean.getKey(),configBean>
public static Map<String,ConfigBean> getConfigMap(){
String configStr = ConfigUtil.getConfigJson();
if(StringUtils.isNotBlank(configStr)){
Type configBeanType = new TypeToken<Map<String,ConfigBean>>(){}.getType();
configUtil.configBeanMap = gson.fromJson(configStr,configBeanType);
return configUtil.configBeanMap;
* set configBeanMap to config file
* @param configBeanMap ConfigBean的map
public static Boolean setConfigMap(Map<String,ConfigBean> configBeanMap){
String configStr = gson.toJson(configBeanMap);
configUtil.configBeanMap = configBeanMap;
Boolean flag = ConfigUtil.setConfigJson(configStr);
private static synchronized ConfigUtil initConfigUtil(){
String configFilePath = getConfigFilePath();
String jsonStr = FileUtil.readStringFromFile(configFilePath);
configUtil = new ConfigUtil(jsonStr);
public static synchronized void destroy(){
配置的名称标识,标识了配置的名称,用于程序拿出指定的名称的配置。
package com.vvvv.musicsns.config;
* the config properties defined in this class
public static String AAAAA = "aaaaa";
public static String BBBBB = "bbbbb";
public static String CCCCC = "ccccc";
package com.vvvv.musicsns.bean;
* config bean ,to store config info
public class ConfigBean implements Serializable {
{"key":"aaaaa","name":"域名","value":"http://aa.com/aaaa","describe":"音乐社区域名,外网:http://aa.vvvv.com"},
{"key":"bbbbb","name":"域名","value":"http://aa.com/aaaa","describe":"音乐社区域名,外网:http://aa.vvvv.com"},
{"key":"ccccc","name":"域名","value":"http://aa.com/aaaa","describe":"音乐社区域名,外网:http://aa.vvvv.com"}