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

This is the config.properties

#DataBase Config
KJJF.driverClassName=oracle.jdbc.OracleDriver
KJJF.databaseURL=jdbc:oracle:thin:@192.168.31.1:1521:zfpay1
KJJF.username=ecfront
package com.jadyer.util;

import java.io.IOException;
import java.util.Properties;

/**
 * 配置文件读取工具
 * @author http://blog.csdn/net/jadyer
 * @version v1.0
 * @editime Jun 7, 2012 5:30:10 PM
 * @created Jun 7, 2012 5:30:10 PM
 */
public class ConfigUtil {
	private Properties config;
	
	/**
	 * 内部类实现单例
	 * @see 这样既能实现延迟加载,减少内存开销,又无多线程问题
	 * @see 这是一个类级的内部类,即静态的成员式内部类,该内部类的实例与外部类的实例没有绑定关系
	 * @see 而且只有被调用时才会装载,从而实现了延迟加载
	 */
	private static class SingletonHolder{
		//静态初始化器,由JVM来保证线程安全
		private static ConfigUtil instance = new ConfigUtil();
	}
	
	/**
	 * 获取ConfigUtil的实例对象
	 * @see 当该方法第一次被调用的时,它第一次读取SingletonHolder.instance,导致SingletonHolder类得到初始化
	 * @see 而SingletonHolder类在装载并被初始化的时,会初始化它的静态域,从而创建ConfigUtil的实例
	 * @see 由于是静态的域,因此只会被虚拟机在装载类的时候初始化一次,并由虚拟机来保证它的线程安全性
	 * @see 这个模式的优势在于:getInstance()方法并没有被同步,并且只是执行一个域的访问,因此延迟初始化并没有增加任何访问成本
	 * @author http://blog.csdn/net/jadyer
	 * @create Jun 7, 2012 7:22:24 PM
	 */
	public static ConfigUtil getInstance(){
		return SingletonHolder.instance;
	}
	
	/**
	 * 克隆方法
	 * @see 禁止通过克隆创建新的对象
	 */
	@Override
	public ConfigUtil clone() {
		return getInstance();
	}
	
	private ConfigUtil(){
		config = new Properties();
		try {
			config.load(ConfigUtil.class.getResourceAsStream("/config.properties"));
		} catch (IOException e) {
			System.out.println("Load /config.properties Error....");
			e.printStackTrace();
			throw new ExceptionInInitializerError("加载系统配置文件失败....");
		}
	}

	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();
	}
}

你可能感兴趣的:(多线程,虚拟机,String,properties,Class,工具)