Spring中Bean的作用域
2012-07-11 15:00
253 查看
Bean的作用域
Bean的作用域定义了Bean的生命周期,在Spring中,一共定义了5种作用域,分别是singleton、prototype、request、session和globalSession。其中,后3种仅对Web应用程序有效。
Singleton作用域
如果不指定scope,默认值即为scope="singleton"。spring的IoC容器仅为每个Bean创建一个实例并保持Bean的引用。也就是说,每次调用getBean()方法请求某一个Bean时,Spring总是返回相同的Bean实例。(即Spring IoC容器只会创建该bean的唯一一个实例,这也是默认的。该实例就会一直放在缓存里供大家使用。)
代码:
<bean id="date" class="java.util.Date"></bean>
或
<bean id="date" class="java.util.Date" scope="singleton"></bean>
Prototype作用域
prototype即原型,指每次向Spring容器请求获取Bean(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)都返回一个全新的Bean,相对于“singleton”来说就是不缓存Bean,每次都是一个根据Bean定义创建的全新Bean。
代码:
<bean id="date" class="java.util.Date" scope="prototype"></bean>
对于prototype作用域的bean,有一点非常重要,那就是Spring不能对一个prototype bean的整个生命周期负责:容器在初始化、配置、装饰或者是装配完一个prototype实例后,将它交给客户端,随后就不会对该prototype实例进行跟踪引用了。所以,无法对prototype作用域的Bean定义destroy-method,不过仍可以定义init-method。
request作用域
表示每个请求需要容器创建一个全新Bean。比如提交表单的数据必须是对每次请求新建一个Bean来保持这些表单数据,请求结束释放这些数据。
session作用域
表示每个会话需要容器创建一个全新Bean。比如对于每个用户一般会有一个会话,该用户的用户信息需要存储到会话中,此时可以将该Bean配置为web作用域。
globalSession
类似于session作用域,只是其用于portlet环境的web应用。如果在非portlet环境将视为session作用域。
Bean的作用域定义了Bean的生命周期,在Spring中,一共定义了5种作用域,分别是singleton、prototype、request、session和globalSession。其中,后3种仅对Web应用程序有效。
Singleton作用域
如果不指定scope,默认值即为scope="singleton"。spring的IoC容器仅为每个Bean创建一个实例并保持Bean的引用。也就是说,每次调用getBean()方法请求某一个Bean时,Spring总是返回相同的Bean实例。(即Spring IoC容器只会创建该bean的唯一一个实例,这也是默认的。该实例就会一直放在缓存里供大家使用。)
代码:
<bean id="date" class="java.util.Date"></bean>
或
<bean id="date" class="java.util.Date" scope="singleton"></bean>
Prototype作用域
prototype即原型,指每次向Spring容器请求获取Bean(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)都返回一个全新的Bean,相对于“singleton”来说就是不缓存Bean,每次都是一个根据Bean定义创建的全新Bean。
代码:
<bean id="date" class="java.util.Date" scope="prototype"></bean>
对于prototype作用域的bean,有一点非常重要,那就是Spring不能对一个prototype bean的整个生命周期负责:容器在初始化、配置、装饰或者是装配完一个prototype实例后,将它交给客户端,随后就不会对该prototype实例进行跟踪引用了。所以,无法对prototype作用域的Bean定义destroy-method,不过仍可以定义init-method。
request作用域
表示每个请求需要容器创建一个全新Bean。比如提交表单的数据必须是对每次请求新建一个Bean来保持这些表单数据,请求结束释放这些数据。
session作用域
表示每个会话需要容器创建一个全新Bean。比如对于每个用户一般会有一个会话,该用户的用户信息需要存储到会话中,此时可以将该Bean配置为web作用域。
globalSession
类似于session作用域,只是其用于portlet环境的web应用。如果在非portlet环境将视为session作用域。
相关文章推荐
- spring中bean的作用域
- Spring中bean的作用域scope
- Spring -- Bean自己主动装配&Bean之间关系&Bean的作用域
- Spring中Bean的作用域和自动装配
- Spring容器中Bean的作用域
- spring中bean的作用域与懒加载及初始化方法和销毁方法以及spring容器的正常关闭
- 传智播客Spring2.5视频教程_配置Spring管理的bean的作用域 2
- 我怎么学习spring-bean的作用域
- Spring Bean的作用域
- 详解Spring中bean的作用域
- 【Spring学习笔记】之【3.4 bean的作用域】
- spring中bean的作用域
- Spring - Bean 的作用域
- SPRING中BEAN的作用域?
- Spring之Bean的作用域
- Spring核心技术之Bean的作用域
- Spring、Bean 的作用域
- 【Spring】Bean的作用域
- Spring中bean的作用域
- 【第三章】 DI 之 3.4 Bean的作用域 ——跟我学spring3