Spring 学习笔记 Bean的作用域

本文介绍了Spring框架中Bean的不同作用域及其对Bean生命周期的影响。详细解释了singleton、prototype等内置作用域,并介绍了request、session及globalSession这三个专为WebApplicationContext新增的作用域。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在配置文件中定义Bean时,用户不但可以配置Bean的属性值以及相互之间的依赖关系,还可以定义Bean的作用域。作用域将对Bean的生命周期和创建方式产生影响。在低版本的Spring中,仅有两个作用域singleton和prototype,在spring 2.0中,针对WebApplicationContext新添了3个新的作用域。下面列出了Spring 2.0支持的所有作用域类型。

Bean的作用域类型

singleton :在Spring IOC容器中仅存在一个Bean实例,Bean以单实例的方式存在;
prototype :每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时,相当于执行new XxxBean()的操作;
request每次HTTP请求都会创建一个新的Bean。该作用域仅适用于WebApplicationContext环境.
session同一个HTTP  Session共享一个Bean,不同于HTTP Session使用不同的Bean。该作用域仅使用于WebApplicationContext环境.
globalSession:同一个全局Session贡献一个Bean,一般用于Portlet应用环境,该作用域仅适用于WebApplicationContext环境.

    在低版本的Spring 中,由于只有两个Bean作用域,所以采用singletion="true|false"的配置方式,Spring为了向后兼容,依旧支持这种配置方式。不过Spring推荐采用新的配置方式:scope="<作用域类型>"。除了以上5中预定义的Bean作用域外,Spring还允许用户自定义Bean的作用域,可以通过org.springframework.beans.factory.config.Scope接口定义新的作用域,再通过org.springframwwork.beans.factory.config.CustomScopeConfigurer这个BeanFactoryPostProcessor注册定义的Bean作用域。不过我们认为在一般的应用中,Spring所提供的作用域已经能够满足应用的要求,用户很少需要自定义新的作用域。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值