請闡述下你對spring循環(huán)依賴的理解?真的是......禿頭是有原因的......
下面逐層深入了解,揭開它的神秘面紗!
在調(diào)用createBeanInstance,通過反射實例化對象后,會調(diào)用addSingletonFactory方法,將創(chuàng)建的早期對象存放到三級緩存中。所以關(guān)鍵在于三級緩存中是否存在早期對象;比如:上述場景二:均采用構(gòu)造器注入,為什么不支持該場景呢?
創(chuàng)建beanA時,在執(zhí)行createBeanInstance(beanA)方法時,此時發(fā)現(xiàn)beanA依賴beanB,則會去執(zhí)行創(chuàng)建beanB流程,但是此時addSingletonFactory方法并沒有執(zhí)行,則三級緩存中不存在早期對象beanA,所以spring不支持“均采用構(gòu)造器注入”的場景。
上述其他場景不再一一闡述。
AOP代理本質(zhì)是反射,反射出來的對象每次都是不同的,如果多個對象和beanA出現(xiàn)循環(huán)依賴,那么只有二級緩存的話就會反射出不同的對象了。
本文鏈接:http://www.www897cc.com/showinfo-26-11891-0.html了解Spring中循環(huán)依賴流程,絕殺面試官!
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com