十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
Spring框架中IOC容器中對象的作用域是什么,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
目前創(chuàng)新互聯(lián)已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站運營、企業(yè)網(wǎng)站設(shè)計、南譙網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
singleton
在IOC容器中只存在一個實例,也就是通過singleton作用域創(chuàng)建的對象是單例的。
這兩個對象的內(nèi)存地址相同,這就說明了當(dāng)前對象確實是一個單例對象了。
prototype
第次從IOC容器中獲取對象時,都返回一個新對象。
request
每次HTTP請求都會創(chuàng)建一個新的對象,當(dāng)請求結(jié)束時則會自動銷毀這個對象。該作用域只針對Web環(huán)境中使用。
session
同一個HTTP Session共享一個對象,不同的HTTP Session使用不同的對象,當(dāng)這個Session結(jié)束時銷毀這個對象。該作用域也是只針對Web環(huán)境中使用的。
globalSession
同一個全局Session共享一個對象,該作用域也是只針對Web環(huán)境中使用的。
延遲加載
我們知道當(dāng)我們使用ApplicationContext接口啟動IOC容器時,會自動的實例化所有singleton作用域的對象,這一點和BeanFactory不同。雖然這么做IOC容器啟動時會很耗時,但是這樣做也有這樣做的好處。就是初始化后的對象會被存儲在IOC容器的緩存中,這樣當(dāng)我們使用對象時,就不用在實例化對象了,從而提高了程序的運行效率。另一個好處就是可以幫助我們早點發(fā)現(xiàn)問題,如果我們配置的對象有問題時,則會直接在啟動階段拋出異常,而不是在程序的運行階段。當(dāng)然每種方式都有每種方式的好處與弊端,如果我們不想在啟動時實例化對象,那么我們可以直接用spring為我們提供的lazy-init屬性延遲我們對象的實例化。也就是說當(dāng)把lazy-init屬性值設(shè)置為true,然后通過ApplicationContext接口啟動IOC容器時,當(dāng)前對象是不會在啟動階段實例化的,而是在運行時才會實例化當(dāng)前對象。
關(guān)于Spring框架中IOC容器中對象的作用域是什么問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。