這篇文章主要為大家詳細(xì)介紹了SpringIOC容器中bean的作用范圍是什么,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,發(fā)現(xiàn)的小伙伴們可以參考一下:
創(chuàng)新互聯(lián)是專業(yè)的北戴河網(wǎng)站建設(shè)公司,北戴河接單;提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行北戴河網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!bean的作用范圍:
可以通過(guò)scope屬性進(jìn)行設(shè)置:
singleton 單例的(默認(rèn))
prototype 多例的
request 作用于web應(yīng)用的請(qǐng)求范圍
session 作用于web應(yīng)用的會(huì)話范圍
global-session 作用于集群環(huán)境的會(huì)話范圍(全局會(huì)話范圍)
測(cè)試:
@Test public void test(){ //通過(guò)ClassPathXmlApplicationContext對(duì)象加載配置文件方式將javabean對(duì)象交給spring來(lái)管理 ApplicationContext applicationContext=new ClassPathXmlApplicationContext("bean.xml"); //獲取Spring容器中的bean對(duì)象,通過(guò)id和類字節(jié)碼來(lái)獲取 Human human = applicationContext.getBean("human", Human.class); Human human1 = applicationContext.getBean("human", Human.class); System.out.println(human==human1); }
結(jié)果:
將scope屬性設(shè)置為prototype時(shí)
結(jié)果:
singleton和prototype的區(qū)別
如果bean屬性設(shè)置為singleton時(shí),當(dāng)我們加載配置文件時(shí)對(duì)象已經(jīng)被初始化
而如果使用prototype時(shí),對(duì)象的創(chuàng)建是我們什么時(shí)候獲取bean時(shí)什么時(shí)候創(chuàng)建對(duì)象
當(dāng)設(shè)置為prototype時(shí)
當(dāng)設(shè)置為singleton時(shí)
bean對(duì)象的生命周期
單例對(duì)象:
出生:當(dāng)容器創(chuàng)建時(shí)對(duì)象出生
活著:只有容器還在,對(duì)象一直活著
死亡:容器銷戶,對(duì)象死亡
單例對(duì)象和容器生命周期相同
測(cè)試:
先設(shè)置屬性init-method和destroy-method,同時(shí)在person類中寫入兩個(gè)方法進(jìn)行輸出打印
public void init(){ System.out.println("初始化..."); } public void destroy(){ System.out.println("銷毀了..."); }
測(cè)試類:
@Test public void test(){ //通過(guò)ClassPathXmlApplicationContext對(duì)象加載配置文件方式將javabean對(duì)象交給spring來(lái)管理 ClassPathXmlApplicationContext Context=new ClassPathXmlApplicationContext("bean.xml"); // //獲取Spring容器中的bean對(duì)象,通過(guò)id和類字節(jié)碼來(lái)獲取 Person person = Context.getBean("person", Person.class); //銷毀容器 Context.close(); }
結(jié)果:
總結(jié):?jiǎn)卫龑?duì)象和容器生命周期相同
當(dāng)屬性改為prototype多例時(shí)
出生:當(dāng)我們使用對(duì)象時(shí)spring框架為我們創(chuàng)建
活著:對(duì)象只要是在使用過(guò)程中就一直活著
死亡:當(dāng)對(duì)象長(zhǎng)時(shí)間不用,且沒(méi)有別的對(duì)象應(yīng)用時(shí),由java垃圾回收器回收對(duì)象
測(cè)試類:
@Test public void test(){ //通過(guò)ClassPathXmlApplicationContext對(duì)象加載配置文件方式將javabean對(duì)象交給spring來(lái)管理 ClassPathXmlApplicationContext Context=new ClassPathXmlApplicationContext("bean.xml"); // //獲取Spring容器中的bean對(duì)象,通過(guò)id和類字節(jié)碼來(lái)獲取 Person person = Context.getBean("person", Person.class); //銷毀容器 Context.close(); }
結(jié)果:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,。