Spring压轴题:当循环依赖遇上Spring AOP
Spring壓軸題 :當(dāng)循環(huán)依賴(lài)遇上Spring AOP
前言
問(wèn):Spring如何解決循環(huán)依賴(lài)?
答:Spring通過(guò)提前曝光機(jī)制,利用三級(jí)緩存解決循環(huán)依賴(lài)(這原理還是挺簡(jiǎn)單的,參考:三級(jí)緩存 、圖解循環(huán)依賴(lài)原理)
再問(wèn):Spring通過(guò)提前曝光 ,直接曝光到二級(jí)緩存已經(jīng)可以解決循環(huán)依賴(lài)問(wèn)題了,為什么一定要三級(jí)緩存?
再細(xì)問(wèn) :如果循環(huán)依賴(lài)的時(shí)候,所有類(lèi)又都需要Spring AOP自動(dòng)代理,那Spring如何提前曝光 ?曝光的是原始bean還是代理后的bean ?
這些問(wèn)題算是Spring源碼的壓軸題了,如果這些問(wèn)題都弄明白,恭喜你順利結(jié)業(yè)Spring源碼了。就單單對(duì)Spring這一塊的理解 ,不夸張的說(shuō)可以達(dá)到阿里水準(zhǔn)了
源碼分析
進(jìn)入正題,在Spring創(chuàng)建Bean的核心代碼doGetBean中,在實(shí)例化bean之前