spring容器中bean的作用范围

本文介绍了Spring容器中Bean的五种作用范围:singleton、prototype、request、session及globalsession,并详细阐述了每种作用范围的特点及其对Bean生命周期的影响。

spring容器中bean的作用范围范围五类,bean的作用范围不同对bean的生命周期和创建方式也会产生一定的影响。

singleton 以单例形式存在,容器中仅有一个bean实例。
prototype 每次从容器中调用bean时,容器都创建一个新的实例,每次调用都相当于new一个新的对象。
request

 每次http请求都会创建一个新的bean。

此作用域仅适用于webApplicationContext环境。

session

 同一个session共享同一个bean,不同的session使用不同的bean。

此作用域仅适用于webApplicationContext环境。

global session

 同一个全局session共享一个Bean,一般用于portlet应用环境,

 此作用域仅适用于webApplicationContext环境。

 

 

 

 

 

 

 

 

 

 

生命周期在bean配置时使用scope=“xxx”的方式进行生命。

spring的ApplicationContext容器在启动时,自动实例化所有singleton类型的bean并缓存在容器中,在使用时就不需要再进行实例化操作。这样做不仅可以提高运行的效率而且可以在提前实例化的过程中检查bean的配置是否有错误。如果不想提前实例化singleton类型的bean,只需要把lazy-init配置为true即可。但是如果lazy-init为true的bean被其他提前实例化的bean所引用,那么该bean依然会被提前实例化。

对于prototype类型的bean,spring容器在启动时并不进行实例化,当需要使用时再进行实例化,实例化后spring就将其交给调用者,之后不再管理其生命周期。

request作用域的bean对应着一个http请求,http请求处理完毕后,容器销毁该bean。

session作用域的bean对应着一次session会话,这样几个http请求就可以共享一个bean,session会话结束对应的bean才被销毁。

globalSession作用域类似于session作用域,不过仅在portlet的web应用中使用。Portlet规范定义了全局Session概念,它被组成portlet web应用的所有子portlet共享。如果不在Portlet web应用环境下,globalSession自然等价于session作有域了。

转载于:https://www.cnblogs.com/blackckat-hm/p/3700043.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值