spring原始碼學習方法
框架主體學習思路
1、學習前置要求
掌握基本的設計模式:如單例、工廠、代理、裝飾、觀察等,最好是所有的設計模式都有所瞭解,這有利於在閱讀原始碼時理解spring開發人員的設計思路。
掌握基本的資料結構、演算法:list、map;理解簡單的鎖,cas,aqs,unsafe包等
掌握反射:理解反射的概念,掌握反射api
多執行緒:瞭解執行緒概念、執行緒的狀態,執行緒的啟動與終止;瞭解常用的執行緒池。
JVM虛擬機器:類載入機制、class位元組碼、
2、學習注意事項:
1、學習框架的目的:不只是為了面試,而是通過框架的學習,提升自己的程式碼設計、編寫能力(wc,這種程式碼還能這樣寫,下次我也這樣寫。),以便後續遇到需要優化開源框架,自己造輪子的情況。
2、關注總體設計思路,以總-分的形式進行學習,先選擇各種中間節點,關注總體結構,後研究細節。例如spring的bean建立包括 :xml、註解等獲取BeanBefination---》填充拓展BeanDefination--》BeanDefination轉化為bean--》存入ioc容器,之後再關注細節研究xml、註解讀取過程,beanDefination增強過程,bean初始化過程,ioc容器儲存bean過程(迴圈依賴)。這樣先總後分,更有利於理解設計思路。
3、主要畫圖總結:遺忘是不可避免的,總結會讓你梳理學過的內容,以後再用到的話,也可以通過自己的總結快速回顧。建議畫圖總結,畢竟“帶字的一看就困,有圖的過目不忘”。想畫什麼圖,完全根據自己的喜好,不是給別人看的。
4、嘗試猜測原始碼是怎麼設計的,自己猜出來,並且驗證確實是這樣的,那就表示你也有spring框架開發人員的設計能力了。其實框架與我們寫的程式碼不一樣的主要原因就是我們在寫程式碼的時候沒有考慮那麼多,就是莽,硬寫。從原始碼的學習中瞭解這麼寫的原因,知道怎麼寫和知道為什麼這麼寫是不一樣的,前者是一個優秀的工具人,後者才是一個有思想的程式設計師。
5、記得檢查和記筆記,原始碼也沒有那麼難嘛--來自28歲的禿頭程式設計師張某。
3、學習順序
暫定先IOC再AOP吧,學到哪算到哪。學習永無止境!
2021年8月6日