天天看點

Spring lazy-init延遲加載源碼剖析一,什麼是懶加載二,延遲加載 getBean方法

一,什麼是懶加載

所謂懶加載,通俗來講就是Spring容器在初始化的過程中,被lazy-init=true修飾的bean不會去執行個體化注入到容器中, 而是在第⼀次進⾏context.getBean() 時進⾏觸發注入。

二,延遲加載 getBean方法

Spring lazy-init延遲加載源碼剖析一,什麼是懶加載二,延遲加載 getBean方法

 直接從getBean方法入手,getBeanFactory擷取工廠類對象,上一篇IOC容器初始化源碼分析的文章中有提到構造的BeanFactory執行個體實際上是一個DefaultListableBeanFactory執行個體,是以這裡的getBean多半是來自這個執行個體中的方法。

通過Debug模式,果然來到了這個執行個體中,調用其getBean方法。getBean方法中,通過resolveBean方法去做Bean的處理。

Spring lazy-init延遲加載源碼剖析一,什麼是懶加載二,延遲加載 getBean方法

 進入到resolveBean方法中,通過Debug跟蹤流程,會進入到resolveNamedBean方法中去。若隻是單從方法名稱去了解,應該是有關于類屬性處理的方法

Spring lazy-init延遲加載源碼剖析一,什麼是懶加載二,延遲加載 getBean方法

 進去之後流程跟蹤下會直接到下面的return中去,傳回需求的是一個BeanHolder對象,BeanHolder對象上一篇文章中也有提到過,存入容器中value值為Bean,這裡的getBean則顯得至關重要,傳回的一定是一個執行個體化對象,點進去看看。然後又回到了getBean當中,這個方法和IOC容器初始化加載執行個體化Bean後面的流程是相同的調用,後面的内容也不做多的剖析了,可以檢視我的上一篇文章https://blog.csdn.net/qq_42773863/article/details/120161460

Spring lazy-init延遲加載源碼剖析一,什麼是懶加載二,延遲加載 getBean方法
Spring lazy-init延遲加載源碼剖析一,什麼是懶加載二,延遲加載 getBean方法

繼續閱讀