/**
*
* spring上下文单例实现,传说中的双重效验锁
*
* @author lli
* @version [版本号, 2016年9月21日]
* @see [相关类/方法]
* @since [产品/模块版本]
*/
public class SingletonCTX {
// 静态变量 确定唯一实例
private volatile static ConfigurableApplicationContext CTX;
// 限制外部不能产生实例
private SingletonCTX() {}
// 对外提供静态获取单例方法
public static ConfigurableApplicationContext getInstance() {
if (CTX == null) {
synchronized (SingletonCTX.class) {
if (CTX == null) {
CTX = new ClassPathXmlApplicationContext("applicationContext.xml");
}
}
}
return CTX;
}
}
静态内部类
public class Singleton {
// 防止外部实例化
private Singleton(){}
// 静态内部类,初始加载 jvm同步机制确认唯一
private static class SingletonInstance{
static Singleton instance = new Singleton();
}
// 对外提供静态获取单例方法
public static Singleton getInstance(){
return SingletonInstance.instance;
}
}