這個簡單的循環(huán)依賴問題,拿來檢驗Spring水平綽綽有余!
前兩天晚上,正當我加班沉浸在敲代碼的快樂中時,聽到前桌的同事在嘀咕:Spring究竟是如何解決的循環(huán)依賴?
這讓我想起最開始學Java的時候,掌握了一點基本語法和面向對象的一點皮毛。當時心里也是各種想法:
依賴注入是什么玩意兒?直接new一個不就行了嗎......
現在再回過頭看當時覺得有點不知天高地厚了。
因為Spring中的循環(huán)依賴非常重要,一方面是源碼中為了解決循環(huán)依賴做了很多處理,另一方面是面試中一旦問到Spring中比較高階的問題,循環(huán)依賴必定逃不掉。如果回答得好,那么這就是必殺技,反之就是被面試官反殺。
到現在,再面對Spring究竟是是如何解決循環(huán)依賴這個問題的時候,我已經可以明確的給出答案:Spring通過三級緩存解決了循環(huán)依賴,一級緩存為單例池、二級緩存為早期曝光對象、三級緩存為早期曝光對象工廠。
僅僅知道這個還不夠,為了知道你掌握spring框架的程度,面試官還會追問:為什么要使用三級緩存來解決循環(huán)依賴問題呢?
這個簡單的循環(huán)依賴問題,其實蘊含的是Spring 最核心的兩個點:
了解Bean的生命周期
了解AOP原理
解決了這個疑問,才能夠說是真正進入了Spring框架源碼的世界。以小見大,在如今Spring生態(tài)系統如此龐大的情況下,要獨自一人梳理好這些技術脈絡并不容易。
所以,這里給大家推薦一個Java進階訓練營。除了會精講大廠Spring面試題詳解以外,JVM調優(yōu)、Springboot底層原理、MYSQL索引實現原理等都會涉及到。訓練營為期4天,每晚20:00,進群即可0元領取聽課名額。

訓練營詳細技術課程大綱:
2、方法區(qū)、永久代、元空間、熱點代碼緩存區(qū)
3、精講虛擬機棧:動態(tài)鏈接、返回現場
4、堆、進入老年代的情況、GC
5、類加載器、運行時數據區(qū)、程序計數器如何協調工作
6、理清虛擬機棧、方法區(qū)、堆區(qū)之間的關聯
2.?springboot如何做到內嵌tomcat
3.?springboot啟動流程原理
4.?常見面試考點SPI規(guī)范講解



評論
圖片
表情
