1.bean的scope
spring容器最初提供了两种bean的scope类型:singleton和proptotype,在2.0发布后,又引入了另外三种scope类型: request, session 和 global session类型。
(1)singleton
对象实例数量。在一个容器中只存在一个共享实例,所有对该类型bean的依赖都引用这一单一实例。
对象存货时间。从bean定义,容器启动,到它第一次被请求而实例化开始,只要容器不销毁或者退出,会一直存活。
通常不知道bean的scope,singleton便是默认的scope。以下三种配置是统一的效果。
<bean id="oobject1" class=".../ xxxobject" />
<bean id="oobject1" class=".../ xxxobject" singleton="true" />
<bean id="oobject1" class=".../ xxxobject" scope="singleton" />
(2)prototype
容器在接到该类型对象请求的时候,每次都会重新生成一个新的对象实例给请求方。即不会共享。以下两种配置的效果是一样的。
<bean id="oobject1" class="../ xxxobject" singleton="false" />
<bean id="oobject1" class="../ xxxobject" scope="prototype" />
(3)request , session, global session
request:
spring容器,即XmlWebApplicationContext会为每个HTTP请求创建一个全新的request对象供当前请求使用。
session:
对于spring容器来说,最常见放到session中的信息就是用户的登录信息。
global session:
除了在基于portlet的web应用中有意义,在基于servlet的web容器使用,几乎与session没有区别。
(4)自定义scope类型。
所有的scope类型都实现了org.springframework.beans.factory.config.Scope接口。
具体请自行查看。要自定义scope类型则需要实现该接口,其中get和remove方法是必须实现的。