一匀奏、鏈接:https://www.zhihu.com/question/21346206/answer/101789659
建議不要硬著頭皮看spring代碼,本身的代碼800多m敲茄,就是不上班開始看也不知道什么時(shí)候看完。
基本原理其實(shí)就是通過(guò)反射解析類及其類的各種信息山析,包括構(gòu)造器堰燎、方法及其參數(shù),屬性笋轨。然后將其封裝成bean定義信息類秆剪、constructor信息類、method信息類爵政、property信息類仅讽,最終放在一個(gè)map里,也就是所謂的container钾挟,池等等洁灵,其實(shí)就是個(gè)map。
建議還是多看看底層的知識(shí)掺出。
評(píng)論:
先搞清楚原理徽千,然后下載源碼Debug一個(gè)小例子,跟進(jìn)代碼汤锨,理解容器双抽、控制反轉(zhuǎn)和依賴注入。
二泥畅、鏈接:https://www.zhihu.com/question/21346206/answer/173940450
As far as I'm concerned, 閱讀好項(xiàng)目源代碼荠诬,有幾個(gè)前提條件要做好:
1). 知道該項(xiàng)目的用途,是干什么的
2). 了解該項(xiàng)目的架構(gòu)位仁,包含什么模塊柑贞,各模塊是干什么的
3). 英文水平最低限度:閱讀無(wú)障礙
回歸正題:怎么閱讀Spring源碼?
1)聂抢、Spring Framework 是一個(gè)開源框架钧嘶,能幫助企業(yè)快速搭建一棧式(Full Stack)企業(yè)級(jí)項(xiàng)目應(yīng)用框架。
2)琳疏、Spring Framework 項(xiàng)目架構(gòu)圖:
3)有决、上面的圖展示出,Spring框架包含了非常多的功能空盼,不能漫無(wú)目的书幕,一股腦地閱讀,這樣很容易頭暈揽趾。了解完Spring架構(gòu)台汇、模塊以及模塊對(duì)應(yīng)的功能后,可以針對(duì)性閱讀部分源碼。逐一攻破苟呐。
4)痒芝、另外Spring在代碼設(shè)計(jì)中運(yùn)用了大量的設(shè)計(jì)模式,可以用事件驅(qū)動(dòng)去學(xué)習(xí)一下設(shè)計(jì)模式牵素。
三严衬、鏈接:https://www.zhihu.com/question/21346206/answer/88486078
建議在這個(gè)頁(yè)面code4craft/tiny-spring下載下來(lái)所有step1--step10所有的項(xiàng)目,全部導(dǎo)入到工程笆呆,看看作者是怎樣一步步把spring整個(gè)框架搭起來(lái)的请琳,一步步順著spring的功能完善代碼,順便學(xué)學(xué)spring類的組織結(jié)構(gòu)腰奋,學(xué)到很多单起,等學(xué)完后頭腦很清晰,確實(shí)受益匪淺
debug斷點(diǎn)運(yùn)行是我針對(duì)這個(gè)項(xiàng)目學(xué)習(xí)最好的方式劣坊,相信你也一樣
四、先懂原理屈留,后有針對(duì)性的看代碼
知識(shí)準(zhǔn)備:了解基礎(chǔ)知識(shí)局冰,不要上來(lái)就閱讀代碼,打好基礎(chǔ)可以做到事半功倍的效果
找開始的地方:做什么事情都要知道從那里開始灌危,讀程序也不例外
分層次閱讀:在閱讀代碼的時(shí)候不要一頭就扎下去康二,這樣往往容易只見樹木不見森林,閱讀代碼比較好的方法有一點(diǎn)象二叉樹的廣度優(yōu)先的遍歷勇蝙。
重復(fù)閱讀:一次就可以將所有的代碼都閱讀明白的人是沒(méi)有的沫勿。反復(fù)的去閱讀同一段代碼有助于得代碼的理解。