好用的properties资源文件读取工具类

下面代码是PropertyUtil 工具类,方便实际开发中快速从配置文件中取值,但是修改.property文件要想生效必须重启服务,导致项目维护困难,疑问抛在代码中,大佬有好的解决方案可以分享下。

public class PropertyUtil {

  private static PropertyUtil propertyUtil;
  private static Properties prop = null;

  /**
   * getPropertyUtil(读取Property文件内容)
   * @return Property文件内容
   */
  
  public static PropertyUtil getPropertyUtil() {
    if (propertyUtil == null) {
      propertyUtil = new PropertyUtil();
    }
    return propertyUtil;
  }

  public String getValue(String fileName, String key) {
    // 好用的资源文件读取
    if(prop == null){
      try {
        prop = new Properties();
        prop.load(PropertyUtil.class.getResourceAsStream("/" + fileName + ".properties"));
        /*properties文件被读取后,信息被放在缓存中,修改properties文件后,
          不重启服务服务的情况下,读取的值没有改变,在网上搜索了下面的解决方案
          但亲测不好用,是否有高手能够解决此问题*/
        // 获取绝对路径
//      String path = Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(1);
//      FileInputStream fis = null;
//      fis = new FileInputStream( path +fileName + ".properties");
//      InputStreamReader sr = new InputStreamReader(fis,"UTF-8");
//      prop.load(sr);
      } catch (FileNotFoundException e) {
        e.printStackTrace();
      } catch (IOException e) {
        e.printStackTrace();
      } 
    }
    return prop.getProperty(key)==null || prop.getProperty(key)==""?"":prop.getProperty(key);
  }
 
}

下面为调用部分代码

// 参数1为文件名 参数2为key
 String username = PropertyUtil.getPropertyUtil().getValue("user", "username");

 

上一篇:Vue3 - 深入组件【未更完!】


下一篇:记录些许问题