下面代码是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");