您好,登錄后才能下訂單哦!
Spring框架中IOC容器中對象的作用域是什么,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
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)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。