首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

spring bean 范畴及单例模式的实现

2012-11-10 
spring bean 范围及单例模式的实现Spring Bean 的scope“singleton/prototype/session”属性singleton:Spri

spring bean 范围及单例模式的实现
Spring Bean 的scope=“singleton/prototype/session”属性


singleton:

SpringIoc容器只会创建该Bean的唯一实例,所有的请求和引用都只使用这个实例


prototype:每次请求都创建一个实例 request: 在一次Http请求中,容器会返回该Bean的同一个实例,而对于不同的用户请求,会返回不同的实例。需要注意的是,该作用域仅在基于Web的Spring ApplicationContext情形下有效,以下的session和global Session也是如此


session:同上,唯一的区别是请求的作用域变为了session

global session:
全局的HttpSession中,容器会返回该bean的同一个实例,典型为在是使用portlet context的时候有效


注意:只要多线程能成功获取单例(即多线程获得的单例实例是相同的),必然能共享单例的状态package pattern.singleton;

// 1.饿汉式单例类(在类初始化时,就已经实例化)
public class Singleton1 {

// 私有的构造函数
private Singleton1(){}

// 自行实例化
private static final Singleton1 singleton = new Singleton1();

// 公共工厂方法
public static Singleton1 getInstance(){
  return singleton;
}

}


package pattern.singleton;

//2.懒汉式单例类(在第一次调用的时候实例化)
public class Singleton2 {

// 私有的构造函数
private Singleton2(){};

// 对象定义
private static Singleton2 singleton;

// 公共的静态同步方法
public synchronized static Singleton2 getInstance() {
  if(singleton==null){
   singleton = new Singleton2();
  }
  return singleton;
}

}

热点排行