五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

怎么閱讀Spring源碼?

2023-07-10 13:33 作者:技術(shù)至上  | 我要投稿

建議不要硬著頭皮看spring代碼,本身的代碼800多m,就是不上班開始看也不知道什么時候看完。如果想學(xué)學(xué)ioc,控制反轉(zhuǎn)這些建議看看jodd項目,比較簡練,但是我仍然不建議過多的看這些框架的代碼,因為這些代碼要完成任務(wù)需要很多瑣碎的類實現(xiàn),比如讀取某個包下面的所有類,解析class的頭文件,反射各種信息,再加上封裝,很有可能在讀源碼的過程中掉到各種細節(jié)里出不來,所以讀這種源碼要事無巨細,理解原理即可。

基本原理其實就是通過反射解析類及其類的各種信息,包括構(gòu)造器、方法及其參數(shù),屬性。然后將其封裝成bean定義信息類、constructor信息類、method信息類、property信息類,最終放在一個map里,也就是所謂的container,池等等,其實就是個map。。汗。。。。當(dāng)你寫好配置文件,啟動項目后,框架會先按照你的配置文件找到那個要scan的包,然后解析包里面的所有類,找到所有含有@bean,@service等注解的類,利用反射解析它們,包括解析構(gòu)造器,方法,屬性等等,然后封裝成各種信息類放到一個map里。每當(dāng)你需要一個bean的時候,框架就會從container找是不是有這個類的定義???如果找到則通過構(gòu)造器new出來(這就是控制反轉(zhuǎn),不用你new,框架幫你new),再在這個類找是不是有要注入的屬性或者方法,比如標(biāo)有@autowired的屬性,如果有則還是到container找對應(yīng)的解析類,new出對象,并通過之前解析出來的信息類找到setter方法,然后用該方法注入對象(這就是依賴注入)。如果其中有一個類container里沒找到,則拋出異常,比如常見的spring無法找到該類定義,無法wire的異常。還有就是嵌套bean則用了一下遞歸,container會放到servletcontext里面,每次reQuest從servletcontext找這個container即可,不用多次解析類定義。如果bean的scope是singleton,則會重用這個bean不再重新創(chuàng)建,將這個bean放到一個map里,每次用都先從這個map里面找。如果scope是session,則該bean會放到session里面。僅此而已,沒必要花更多精力。建議還是多看看底層的知識。


怎么閱讀Spring源碼?的評論 (共 條)

分享到微博請遵守國家法律
沾益县| 上栗县| 陇川县| 札达县| 扶余县| 锡林郭勒盟| 喀喇| 南溪县| 赤壁市| 永丰县| 新郑市| 漳浦县| 台山市| 葫芦岛市| 体育| 博乐市| 基隆市| 纳雍县| 南阳市| 罗定市| 沙洋县| 伊春市| 台江县| 常德市| 凉城县| 弥勒县| 临朐县| 尉氏县| 庆阳市| 肇东市| 阿克陶县| 德昌县| 偏关县| 嵩明县| 五莲县| 岚皋县| 土默特右旗| 乌鲁木齐市| 凤冈县| 和硕县| 陵水|