Spring中bean的作用范围:Scope属性的值
2013-04-24 18:22
99 查看
在SpringIOC容器中,由它管理的JavaBean具有作用范围。
如果设置为false,那么每当其他bean依赖此bean时,容器则会重新实例化一个该bean对象,为其注入。
需要注意的是:
1、在下面的例子中,如果把computer1和computer2两个受管bean都设置成单例bean,SpringIoC容器则分别实例化两个bean,把它们作为两个不同的bean对待,尽管他们的类相同。
2、一般来说,对于无状态的bean使用单例模式,对于有状态的bean使用prototype模式。
3、SpringIoC容器不会维护prototype类型的bean的整个声明周期,容器在实例化、配置、注入之后就把它扔给调用者,然后就不管了。
4、如果一个单例beancomputer引用了一个prototype类型的beanhost,由于单例bean只初始化一次,所以不能保证每次调用computer时host都是最新的。解决办法是使用lookup方法注入。
1、singleton,即单例bean,和1.x中singleton=”true”相同。
2、prototype,同Spring1.x中的singleton=”false”。
3、request,这种bean在web的request范围内有效,即每次请求时都会产生一个实例。只用于web程序中。
4、session,这种bean在web的session范围内有效。只用于web程序中。
5、globalsession,这种bean在web的全局session范围内有效。只用于webportlet框架中。
Spring1.x版本
在Spring1.x版本中,标签有一个属性singleton,取值为布尔类型。如果将其设置为true,那么容器之中只存在一个该bean的共享实例,当其他的任何Bean依赖该bean时,只要请求的id与该bean的id相同,容器就将该bean的实例注入到请求的bean中。换言之,SpringIoC容器只是创建该bean的一个唯一实例,并把它存存贮在容器的单例缓存中,在需要时才将其取出。这样的受管bean称之为“单例bean”。如果设置为false,那么每当其他bean依赖此bean时,容器则会重新实例化一个该bean对象,为其注入。
需要注意的是:
1、在下面的例子中,如果把computer1和computer2两个受管bean都设置成单例bean,SpringIoC容器则分别实例化两个bean,把它们作为两个不同的bean对待,尽管他们的类相同。
1 | < bean id = "computer1" class = "ioc.test.Computer" scope = "singleton" /></ bean > |
2 | < bean id = "computer2" class = "ioc.test.Computer" scope = "singleton" /></ bean > |
3、SpringIoC容器不会维护prototype类型的bean的整个声明周期,容器在实例化、配置、注入之后就把它扔给调用者,然后就不管了。
4、如果一个单例beancomputer引用了一个prototype类型的beanhost,由于单例bean只初始化一次,所以不能保证每次调用computer时host都是最新的。解决办法是使用lookup方法注入。
Spring2.0时代
到了Spring2.0时代,scope属性代替了原来的的singleton属性,scope提供了更多的选项,从而可以更加灵活的配置bean的作用范围。Spring2.0中,scope属性有如下可能的取值,说明如下:1、singleton,即单例bean,和1.x中singleton=”true”相同。
2、prototype,同Spring1.x中的singleton=”false”。
3、request,这种bean在web的request范围内有效,即每次请求时都会产生一个实例。只用于web程序中。
4、session,这种bean在web的session范围内有效。只用于web程序中。
5、globalsession,这种bean在web的全局session范围内有效。只用于webportlet框架中。
相关文章推荐
- Spring中bean作用域属性scope
- Spring:Bean的别名(name)和作用域(scope属性)
- Spring注入非单例bean以及scope的作用范围
- Spring注入非单例bean以及scope的作用范围
- Spring注入非单例bean以及scope的作用范围
- Spring的Bean作用域(配置javabean时设置scope属性为以下相应值)
- Spring(10)——bean作用范围(二)——自定义scope
- spring(4)_ bean属性 scope:作用域和lazy-init
- 容器对象spring(4)_ bean属性 scope:作用域和lazy-init
- spring注入非单例bean及scope的作用范围
- Spring——bean标签的scope属性
- spring中bean属性scope介绍
- Spring——自定义属性编辑器+Bean的生存范围+Bean的生命周期
- spring中bean的作用域属性single与prototype的区别
- Spring Bean Scope (作用域)
- spring bean scope属性
- spring配置文件中bean中scope属性prototype和singleton
- Spring——自定义属性编辑器+Bean的生存范围+Bean的生命周期
- Spring-6:Bean的scope属性
- Spring-基于注解的配置[03Bean作用范围和生命周期方法]