Spring支持的bean作用域

本文详细介绍了Spring框架中Bean的五种作用域:singleton、prototype、request、session及globalsession的特点与应用场景,并给出了实用的经验建议。

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

singleton
容器只为bean创建一个实例。
客户端每次请求都返回一个共享实例。
客户端不能控制bean的生命周期。
由容器控制bean的产生,销毁。
prototype
每次请求bean时。都会创建一个新的实例。
客户端每次请求(调用getBean(“”)方法)都产生一个新的实例。
实例化后,完全交给客户端代码管理,容器不再追踪其生命周期。并不知道bean何时销毁。
request
用于web应用,bean在一次请求中有效。
session
用于web应用,bean在整个会话中有效。
使用经验:
0. Singleton作用域是Spring中的缺省作用域。
1. 结合Struts每次请求都产生一个新的action bean,所以结合Struts的使用,就用prototype
2. 典型情况下,DAO不会被配置成prototype,因为一个典型的DAO不会持有任何会话状态,因此应该使用singleton作用域。
3. 如果你用"singleton"属性那么就必须在那个文件里引用'spring-beans.dtd' DTD。 如果你用"scope"属性那么必须 在那个文件里引用'spring-beans-2.0.dtd' DTD 或'spring-beans-2.0.xsd' XSD。
4. request、session以及global session仅仅在使用基于web的Spring ApplicationContext实现(如XmlWebApplicationContext)时有用,如果在普通的Spring IoC容器中,比如像XmlBeanFactory或ClassPathXmlApplicationContext,尝试使用这些作用域,你将会得到一个IllegalStateException异常(未知的bean作用域)。
5. 对所有有状态的bean应该使用prototype作用域,而对无状态的bean则应该使用singleton作用域。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值