一阴汇、概述
????????Spring容器管理的bean在默認(rèn)情況下是單例的数冬,也即,一個(gè)bean只會(huì)創(chuàng)建一個(gè)對象搀庶,存在內(nèi)置map中拐纱,之后無論獲取多少次該bean,都返回同一個(gè)對象地来。
? ??????但是在實(shí)際開發(fā)中是存在多例的需求的戳玫,Spring也提供了選項(xiàng)可以將bean設(shè)置為多例模式。
二未斑、配置多例
? ? ? ? 多例 scope="prototype"?
? ? ? ? 單例?scope="singleton"? (默認(rèn)方式)
? ? ? ? 例:<bean id="dog" class="com.dreamguard.domain.Dog" scope="prototype"></bean>
三咕宿、bean的生命周期
3.1 單例模式下的生命周期?
????????bean在單例模式下,spring容器啟動(dòng)時(shí)解析xml發(fā)現(xiàn)該bean標(biāo)簽后蜡秽,直接創(chuàng)建該bean的對象存入內(nèi)部map中保存府阀,此后無論調(diào)用多少次getBean()獲取該bean都是從map中獲取該對象返回,一直是一個(gè)對象芽突。此對象一直被Spring容器持有试浙,直到容器退出時(shí),隨著容器的退出對象被銷毀寞蚌。
3.2 多例模式下的生命周期
? ??????bean在多例模式下田巴,spring容器啟動(dòng)時(shí)解析xml發(fā)現(xiàn)該bean標(biāo)簽后,只是將該bean進(jìn)行管理挟秤,并不會(huì)創(chuàng)建對象壹哺,此后每次使用 getBean()獲取該bean時(shí),spring都會(huì)重新創(chuàng)建該對象返回艘刚,每次都是一個(gè)新的對象管宵。這個(gè)對象spring容器并不會(huì)持有,什么銷毀取決于使用該對象的用戶自己什么時(shí)候銷毀該對象。
完整代碼下載
????????https://github.com/hailindai/SpringSample