spring Bean的五个作用域

spring中bean的五个作用域:
当通过Spring容器创建一个bean的时候,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域,Spring支持五中作用域:
1.singleton:单例模式,每次通过spring Ioc容器中,使用singleton定义的Bean将只有一个实例
2.prototype:原型模式,每次通过容器的getBean方法获取prototype定义bean时,都将产生一个新的Bean的实例.
3.request:对于每次的http请求,使用request定义的bean都将产生一个新的实例,即每次http请求将会产生不同的Bean实例.只有在web应用中使用spring时,
该作用域才有效.
4.session:对于每次http session,使用session定义的bean都将产生一个新的实例,同样只有在web应用中使用spring时,该作用域才有效.
5.globalsession:每个全局的http Session,使用session定义的bean都将产生一个新的实例,典型情况下,仅在使用portlet context的时候才有效,同样只有在web应用中使用spring时,
该作用域才有效.

其中比较常用的是singleton和prototype两种作用域,对于singleton作用域的bean,每次请求该bean都将获得相同的实例,容器负责跟踪bean实例的状态,负责维护bean实例的生命周期行为;
如果一个bean被设置成prototype作用域,程序每次请求该id的bean,spring都会新建一个bean的实例,然后返回给程序,在这种情况下,spring容器仅仅使用new关键字创建bean实例,一旦创建成功,
容器不在跟踪实例,也不再维护bean实例的状态.
如果不指定bean的作用域,spring默认使用singleton作用域,java在创建java实例时,需要进行内存申请,销毁实例时,需要完成垃圾回收,这些工作都会导致系统开销的增加,因此,prototype作用域
Bean的创建,销毁代价比较大.而singleton作用域的bean实例一旦创建成功,可以重复使用,因此,除非必要情况,否则尽量避免将bean设置成prototype作用域.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值