1. 饿汉式
/**
* 单列设计模式 饿汉式
* @author chenPeng
* @version 1.0.0
* @ClassName PropertiesHolder.java
* @Description TODO
* @createTime 2019年01月28日 19:23:00
*/
public class PropertiesHolderHunger {
private static Properties pros = new Properties();
static {
try {
pros.load(PropertiesHolderHunger.class.getClassLoader().getResourceAsStream(
"config.properties"));
} catch (IOException e) {
e.printStackTrace();
}
}
public static Properties getPros() {
return pros;
}
@Test
public void proTest() throws IOException {
Properties pros = getPros();
String temp = pros.getProperty("LOG_SOURCE_DIR");
System.out.println(temp);
}
}
懒汉式
/**
* 单列模式:懒汉式——并考虑线程安全
* @author chenPeng
* @version 1.0.0
* @ClassName PropertiesHolderLaze.java
* @Description TODO
* @createTime 2019年01月28日 19:47:00
*/
public class PropertiesHolderLaze {
private static Properties pros = null;
public static Properties getPros() throws IOException {
if (pros==null){
synchronized (PropertiesHolderLaze.class){
if (pros==null){
pros = new Properties();
pros.load(PropertiesHolderLaze.class.getClassLoader().getResourceAsStream(
"config.properties"));
}
}
}
return pros;
}
}
解释
- 获取配置文件的输入流
PropertiesHolderLaze.class.getClassLoader().getResourceAsStream("config.properties")
- synchronized为锁