當前位置:首頁 > 公眾號精選 > 程序員小灰
[導讀]最近很多水友在后臺留言問關于Spring的循環(huán)依賴問題,這也是最近兩年新出的面試頻度較高的面試題! 下面我們就通過這篇文章讓大家了解循環(huán)依賴的問題 什么是循環(huán)依賴? 循環(huán)依賴其實是指兩個及以上bean相互持有對方,最終形成閉環(huán)的過程(一般聊循環(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)系我們,謝謝!

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
關閉
關閉