配置文件读取工具类v2.0

来源:互联网 发布:网络舆论的负面作用 编辑:程序博客网 时间:2024/05/24 03:44

This is the config.properties

#DataBase ConfigKJJF.driverClassName=oracle.jdbc.OracleDriverKJJF.databaseURL=jdbc:oracle:thin:@192.168.31.1:1521:zfpay1KJJF.username=ecfront

This is the ConfigUtil.java

package com.jadyer.util;import java.io.IOException;import java.util.Properties;/** * 配置文件读取工具 * @author 玄玉<http://blog.csdn/net/jadyer> * @update 更新日志:采用枚举的方式实现单例 * @update 更新日志:这种方式是Effective Java作者Josh Bloch提倡的方式 * @update 更新日志:它不仅能避免多线程同步问题,而且还能防止反序列化重新创建新的对象 * @update 更新日志:用法为-->ConfigUtil.INSTANCE.getProperty("KJJF.databaseURL") * @version v2.0 */public enum ConfigUtil {INSTANCE;private Properties config;private ConfigUtil(){config = new Properties();try {config.load(ConfigUtil.class.getResourceAsStream("/config.properties"));} catch (IOException e) {System.out.println("Load /config.properties Error....");throw new ExceptionInInitializerError("加载系统配置文件失败....");}}/** * 配置文件的键值中含系统属性时的获取方式 * @see 若配置文件的某个键值含类似于${user.dir}的写法,如log=${user.dir}/app.log * @see 则可以通过该方法使用系统属性中user.dir的值,替换掉配置文件键值中的${user.dir} */public String getPropertyBySysKey(String key){String value = config.getProperty(key);if(value!=null && Pattern.compile("\\$\\{\\w+(\\.\\w+)*\\}").matcher(value).find()){String sysKey = value.substring(value.indexOf("${")+2, value.indexOf("}"));value = value.replace("${"+sysKey+"}", System.getProperty(sysKey));}return value;}public String getProperty(String key){return config.getProperty(key);}public String getProperty(String key, String defaultValue) {return config.getProperty(key, defaultValue);}public int getPropertyForInt(String key){return Integer.valueOf(config.getProperty(key)).intValue();}public int getPropertyForInt(String key, String defaultValue) {return Integer.valueOf(config.getProperty(key, defaultValue)).intValue();}}
原创粉丝点击