一.bean的作用域(scope)常見的有兩種配置項(xiàng)(單例模式singleton/原型模式prototype)
1.單例模式singleton(默認(rèn)取值為singleton---對象只創(chuàng)建一次)
<bean id="someService" class="com.bjsxt.service.impl.SomeServiceImpl" scope="singleton">
2.原型模式prototype(每次獲取的實(shí)例都是一個新實(shí)例)
<bean id="someService" class="com.bjsxt.service.impl.SomeServiceImpl" scope="prototype">
二.scope配置項(xiàng)有還有另外3個屬性,用于描述不同的作用域。
3.request
該屬性僅對HTTP請求產(chǎn)生作用,使用該屬性定義Bean時,每次HTTP請求都會創(chuàng)建一個新的Bean,適用于WebApplicationContext環(huán)境。
4.session
該屬性僅用于HTTP Session,同一個Session共享一個Bean實(shí)例。不同Session使用不同的實(shí)例。
5.global-session
該屬性僅用于HTTP Session,同session作用域不同的是,所有的Session共享一個Bean實(shí)例
三.總結(jié)
Spring IOC容器創(chuàng)建一個Bean實(shí)例時,可以為Bean指定實(shí)例的作用域,作用域包括singleton(單例模式)、prototype(原型模式)、request(HTTP請求)、session(會話)、global-session(全局會話)。
singleton和prototype模式,這兩個模式的作用域在Spring框架中是經(jīng)常用到的。對于singleton作用域的Bean,IOC容器每次都返回同一個實(shí)例,而prototype作用域的Bean,IOC容器每次產(chǎn)生一個新的實(shí)例