Java 单例模式读取 Properties 属性文件
属性文件src/jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=123456
单例模式读取属性文件实现
package com.hcm.common.utils;
import java.io.InputStream;
import java.util.Properties;
/**
* 单例模式读取Properties属性文件
*
* @author huangcongmin
* @version , 2012-7-29
* @since
*/
public class PropertiesFactoryHelper {
/**
* 私有的属性防止外部引用
*/
private static PropertiesFactoryHelper _instance = null;
private Properties properties = new Properties();
/**
* 私有的默认构造函数,防止使用构造函数进行实例化
*/
private PropertiesFactoryHelper() {
try {
InputStream inputStream = this.getClass().getResourceAsStream("/jdbc.properties");
properties.load(inputStream);
if (inputStream != null)
inputStream.close();
} catch (Exception e) {
System.out.println(e + "file not found");
}
}
/**
* 单例静态工厂方法,同步防止多线程环境同时执行
*
* @author huangcongmin
* @date 2012-7-29
* @return
*/
synchronized public static PropertiesFactoryHelper getInstance() {
if (_instance == null) {
_instance = new PropertiesFactoryHelper();
}
return _instance;
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#clone()
*/
public PropertiesFactoryHelper clone() {
return getInstance();
}
/**
* 读取配置信息key - value
*
* @author huangcongmin
* @date 2012-7-29
* @param key
* @return
*/
public String getConfig(String key) {
return properties.getProperty(key);
}
}
测试类
public class Test {
public static void main(String[] args) {
PropertiesFactory propFactory = PropertiesFactory.getInstance();
System.out.println(propFactory.getConfig("jdbc.url"));
}
}
控制台输出
jdbc:mysql://localhost:3306/test