单例模式将配置文件加载在jvm内存,修改配置文件,可调用reload方法重新加载至内存

来源:互联网 发布:非洲知乎 编辑:程序博客网 时间:2024/06/06 01:46
package com.single;import java.io.InputStream;import java.util.HashMap;import java.util.Map;import java.util.Properties;public class ConfigFactory {private static ConfigFactory _factory = createConfigFactory();private Map<String, String> configMap = null;private ConfigFactory() {}public static ConfigFactory createConfigFactory() {Properties p = new Properties();InputStream in = null;ConfigFactory factory = null;try {in = ConfigFactory.class.getResourceAsStream("/config.properties");p.load(in);factory = new ConfigFactory();factory.configMap = new HashMap<String, String>();for (Map.Entry<Object, Object> entry : p.entrySet()) {factory.configMap.put(entry.getKey().toString(), entry.getValue().toString());}} catch (Exception e) {e.printStackTrace();} finally {try {in.close();} catch (Exception e2) {// TODO: handle exception}}return factory;}public static String getVaule(final String key) {System.out.println(_factory.configMap);return _factory.configMap.get(key);}public static synchronized ConfigFactory getInstance() {if (_factory == null) {reload();}return _factory;}public static boolean reload() {ConfigFactory factory = createConfigFactory();if (factory == null) {return false;} else {if (_factory == null) {_factory = factory;return true;}synchronized (_factory) {ConfigFactory tmp = _factory;_factory = factory;tmp = null;}}return true;}public Map<String, String> getConfigMap() {return configMap;}}

最近的
0 0
原创粉丝点击