想不到,三級緩存是這樣解決循環(huán)依賴問題的?
掃描二維碼
隨時隨地手機看文章
最近很多水友在后臺留言問關于Spring的循環(huán)依賴問題,這也是最近兩年新出的面試頻度較高的面試題!
下面我們就通過這篇文章讓大家了解循環(huán)依賴的問題
什么是循環(huán)依賴?
循環(huán)依賴其實是指兩個及以上bean相互持有對方,最終形成閉環(huán)的過程(一般聊循環(huán)依賴都是默認的單例bean),簡單說就是A依賴B,B依賴C,C又依賴A。
其實在Spring中,有兩種循環(huán)依賴的場景...
第一種:構造器的循環(huán)依賴
第二種:setter的依賴注入
第一種是沒有辦法解決的,而第二種可以使用提前暴露對象的方式進行解決
那么肯定有很多小伙伴會有疑問,為什么?
其實想搞明白這個問題,需要對Spring的Bean的生命周期有一個完整的了解,如下圖:
大家可能對這個圖不太熟悉,但是我要強調(diào)的是,圖中我已經(jīng)用三種顏色標識了,除了使用這部分之外,可以分為實例化和初始化,這也是解決問題的核心。
同時,Spring中還使用了三級緩存來解決問題:
上圖就是Spring中的三級緩存,那么問題來了
Spring是如何通過三級緩存來解決問題的?
一級緩存能不能解決?為什么?
二級緩存能不能解決?為什么?
為什么非要使用三級緩存?使用三級緩存是為了解決什么問題?
為了弄懂這個問題,我在微信上跟馬士兵老師聊了很久,恍然大悟!
這里面知識點很多,以后有機會要專門寫一篇,如果你等不及,可以先去參加一下馬老師的《大廠必備Spring》訓練營
時間:7月16日-7月17日 兩天,晚20:00開始
我為大家申請到了公眾號專屬福利,這兩天的直播,大家可以免費報名!誠意夠不夠?
如何參加?
掃碼加小助手,獲取直播地址
報名即送架構師成長路線圖
專屬福利,名額有限,先到先得
第一天:
如何利用反射實現(xiàn)Autowired注解
一招教你如何手撕SpringIOC源碼
Spring程序是如何啟動的?
Spring是如何加載配置文件到應用程序的?
掌握核心接口BeanDefinitionReader
掌握核心接口BeanFactory
徹底搞懂Spring的refresh方法
BeanPostProcessor接口的作用及實現(xiàn)
BeanFactoryPostProcessor接口的作用及實現(xiàn)
第二天:
Spring Bean有沒有必要實現(xiàn)Aware接口
Spring Bean的實例化過程大揭密
Spring Bean的初始化到底干了什么
徹底理解FactoryBean接口
完美解析Spring Bean的生命周期
Spring的Environment接口有什么作用?
為什么產(chǎn)生循環(huán)依賴問題
循環(huán)依賴在Spring中是如何解決的
如何巧妙回答Spring IOC面試題
連續(xù)兩天(7月16日-7月17日)每天2小時(20:00-22:00),免費聽《大廠必備Spring》,干貨滿滿,只能幫到你這里了,快去一起學習吧...
現(xiàn)在掃碼立即免費報名
掃碼加小助手,獲取直播地址
報名即送架構師成長路線圖
專屬福利,名額有限,先到先得
另外準備一份干貨滿滿的學習資料,送給大家,抓緊領取...
如何參加?
掃碼加小助手,獲取直播地址
報名即送架構師成長路線圖
專屬福利,名額有限,先到先得
免責聲明:本文內(nèi)容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!