您好,登錄后才能下訂單哦!
Spring框架中IOC容器中對象的作用域是什么,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
singleton
在IOC容器中只存在一個實例,也就是通過singleton作用域創建的對象是單例的。
這兩個對象的內存地址相同,這就說明了當前對象確實是一個單例對象了。
prototype
第次從IOC容器中獲取對象時,都返回一個新對象。
request
每次HTTP請求都會創建一個新的對象,當請求結束時則會自動銷毀這個對象。該作用域只針對Web環境中使用。
session
同一個HTTP Session共享一個對象,不同的HTTP Session使用不同的對象,當這個Session結束時銷毀這個對象。該作用域也是只針對Web環境中使用的。
globalSession
同一個全局Session共享一個對象,該作用域也是只針對Web環境中使用的。
延遲加載
我們知道當我們使用ApplicationContext接口啟動IOC容器時,會自動的實例化所有singleton作用域的對象,這一點和BeanFactory不同。雖然這么做IOC容器啟動時會很耗時,但是這樣做也有這樣做的好處。就是初始化后的對象會被存儲在IOC容器的緩存中,這樣當我們使用對象時,就不用在實例化對象了,從而提高了程序的運行效率。另一個好處就是可以幫助我們早點發現問題,如果我們配置的對象有問題時,則會直接在啟動階段拋出異常,而不是在程序的運行階段。當然每種方式都有每種方式的好處與弊端,如果我們不想在啟動時實例化對象,那么我們可以直接用spring為我們提供的lazy-init屬性延遲我們對象的實例化。也就是說當把lazy-init屬性值設置為true,然后通過ApplicationContext接口啟動IOC容器時,當前對象是不會在啟動階段實例化的,而是在運行時才會實例化當前對象。
關于Spring框架中IOC容器中對象的作用域是什么問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。