Przeglądaj źródła

完善资源文件工具类

shuzheng 9 lat temu
rodzic
commit
15ad1b8d94

+ 44 - 7
common/src/main/java/com/zheng/common/util/PropertiesFileUtil.java

@@ -1,26 +1,63 @@
 package com.zheng.common.util;
 
+import java.util.Date;
+import java.util.HashMap;
+import java.util.MissingResourceException;
 import java.util.ResourceBundle;
 
 /**
- * 配置文件读取工具
+ * 资源文件读取工具
  *
  * @author shuzheng
  * @date 2016年10月15日
  */
 public class PropertiesFileUtil {
 
+    // 当打开多个资源文件时,缓存资源文件
+    private static HashMap<String, PropertiesFileUtil> configMap = new HashMap<String, PropertiesFileUtil>();
+    // 打开文件时间,判断超时使用
+    private Date loadTime = null;
+    // 资源文件
     private ResourceBundle resourceBundle = null;
+    // 默认资源文件名称
+    private static final String NAME = "config";
 
-    public PropertiesFileUtil(String bundleFile) {
-        resourceBundle = ResourceBundle.getBundle(bundleFile);
+    // 私有构造方法,创建单例
+    private PropertiesFileUtil(String name) {
+        this.loadTime = new Date();
+        this.resourceBundle = ResourceBundle.getBundle(name);
     }
 
-    public String getValue(String key) {
-        if (null == resourceBundle) {
-            return null;
+    public static synchronized PropertiesFileUtil getInstance() {
+        return getInstance(NAME);
+    }
+
+    public static synchronized PropertiesFileUtil getInstance(String name) {
+        PropertiesFileUtil conf = configMap.get(name);
+        if (null == conf) {
+            conf = new PropertiesFileUtil(name);
+            configMap.put(name, conf);
+        }
+        // 判断是否打开的资源文件是否超时1分钟
+        if ((new Date().getTime() - conf.getLoadTime().getTime()) > 60*1000) {
+            conf = new PropertiesFileUtil(name);
+            configMap.put(name, conf);
+        }
+        return conf;
+    }
+
+    // 根据key读取value
+    public String get(String key) {
+        try {
+            String value = resourceBundle.getString(key);
+            return value;
+        }catch (MissingResourceException e) {
+            return "";
         }
-        return resourceBundle.getString(key);
+    }
+
+    public Date getLoadTime() {
+        return loadTime;
     }
 
 }