如何閱讀原始碼

2021-10-07 14:45:48 字數 768 閱讀 8501

我剛開始閱讀原始碼就是盲目的去讀,不知到問什麼要讀,讀那部分,甚至準備把所有的原始碼類從上到下依次讀一遍,但是其實這樣是錯的,導致我從第乙個類開始就不知道當前這類的作用,乙個星期也沒什麼進展

其實正確閱讀原始碼的姿勢應該是首先得有疑問,比如spring框架,很長一段時間我都聽說spring的ioc是乙個map集合,但是實際是不是真的不知道,我就開始嘗試解決這個問題:找到spring框架的容器,怎麼找呢?請看第三點

從頂級介面開始學習原始碼:既然是容器那肯定需要從容器中獲取bean,我們都知道spring是通過bean工廠來管理bean的,那我就找到了bean工廠的頂級介面:beanfactory,因為我記得在這個介面中存在乙個getbean方法是可以進行bean的獲取的,但是問題又來了,這只是個介面找不到實現怎麼辦?請看第四點

結合idea的檢視介面實現的快捷鍵去找,但是發現有很多類都實現了這個介面,首先先排除不是spring原始碼包下的實現類,這個不太好理解,但是這裡先不解釋了,自己思考一下,然後有兩種方式:第一種是將所有的實現介面都看一遍,第二種是先了解抽象類的實現,然後再去了解其他實現方法

我在abstractbeanfactory中找到了getbean方法,在通過該方法終於找到了獲取bean的源頭,最終發現ioc容器確實是使用map集合實現的,而且在單例情況下是使用currenthashmap實現的。

其實不難發現通過上面一級級的查詢的過程中我們是有目的的,注意:閱讀原始碼目的很重要,要知道自己為什麼要讀,自己要了解什麼,不然只能像無頭蒼蠅一樣亂轉,絲毫沒有任何進度

如何閱讀原始碼

帶著問題閱讀 要解決什麼問題 是如何實現的?背景調查 看官網介紹 維基百科,了解主要功能,被應用於哪些專案以及基本的使用,掌握這些基本資訊 使用框架 至少follow get started 做個小demo 真的有人連api都沒呼叫過,上來就看 盡可能編譯除錯。能除錯的 幾乎沒有看不懂的 了解一些設...

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...

Webpack 原始碼(二) 如何閱讀原始碼

如果想要了解 webpack 的流程,只要閱讀 七珏 細說 webpack 之流程篇 所述的內容就夠了,講解地比較全面了 本文就不對 webpack 流程再做重複的描述,而是從另外乙個角度補充分析 webpack 原始碼 webpack 中最為重要的無非是 compiler compilation ...