開始造一個spring框架

先從基礎開始造:

一.接口和類之間的關系圖

二:任務:將xml中定義的bean全部交給spring容器進行管理捡遍;實現(xiàn):1??利用Dom4j解析xml文件生成BeanDefinition虽抄,2??獲取bean實例的時候通過反射進行獲取

三:單一指責(SRP) ?對于一個類來說航夺,應該僅有一個引起它變的原因餐弱,如果有多余一個動機去改變一個類的話,這個類就具有多余一個指責烹吵,把多個指責耦合一起的話打颤,一個變化可能會消弱這個類完成其他職責的能力。

四:基于單一指責于个,各個類的主要職責為:

1??XmlBeanDefinitionReader:主要職責是通Dom4j解析xml氛魁,為spring容器生成一個個BeanDefinition

依賴:BeanDefinitionRegistry, 通過構造方法傳入,該類有兩個方法秀存,獲取BeanDefinition和注冊BeanDefinition

方法

該方法傳入一個Resource實例捶码,里面有一個獲取輸入流的方法;其實現(xiàn)類為FileSystemResource和ClassPathResource

FileSystemResource是從系統(tǒng)文件中獲取xml或链;ClassPathResource是從項目的資源文件中獲取xml

2??BeanFactory:是個接口惫恼,里面就一個方法,根據傳入的beanID獲取bean實例

該類有兩個現(xiàn)實:ConfigurableBeanFactory和AbstractApplictionContext澳盐;ConfigurableBeanFactory中可以設置ClassLoader,這個ClassLoader主要用在通過反射創(chuàng)建bean實例和讀取classpath下的資源祈纯,如果不傳有個默認值

3??DefaultBeanFactory:該類是集大成者,繼承DefaultSingletonBeanRegistry,實現(xiàn)BeanDefinitionRegistry類中注冊BeanDefiniton的方法和ConfigurableBeanFactory設置ClassLoader的方法

4??DefaultSingletonBeanRegistry:spring單例實現(xiàn)的類叼耙,實現(xiàn)SingletonBeanRegistry

5??ApplicationContext:提供給用戶使用的類腕窥,一般用戶通過這個獲取bean,有兩個實例ClassPathXmlApplication與FileSystemXmlApplicationContext筛婉;為了減小兩個實現(xiàn)類中的代碼重復簇爆,使用模版方法,加一個中間抽象類AbstractApplicationContext倾贰,有個抽象方法根據路徑獲取Resource

AbstractApplicationContext封裝了DefaultBeanFactory(注冊BeanDefinition,獲取bean實例)拦惋,封裝了XmlBeanDefinitionReader解析xml文件匆浙;

然后ClassPathXmlApplication與FileSystemXmlApplicationContext只需要繼承AbstractApplicationContext,實現(xiàn)其中的抽象方法getResourceByPath;

五:測試:對ApplicationContext、BeanFactory厕妖、Resource進行測試首尼;具體見git:https://gitee.com/zhouyanxu/createSpring.git

六:未完待續(xù),有時間再看再寫

如何實現(xiàn):注解比如@setter注入言秸,構造函數(shù)注入等以及Aop實現(xiàn)

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末软能,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子举畸,更是在濱河造成了極大的恐慌查排,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抄沮,死亡現(xiàn)場離奇詭異跋核,居然都是意外死亡,警方通過查閱死者的電腦和手機叛买,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門砂代,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人率挣,你說我怎么就攤上這事刻伊。” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵捶箱,是天一觀的道長智什。 經常有香客問我,道長讼呢,這世上最難降的妖魔是什么撩鹿? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮悦屏,結果婚禮上节沦,老公的妹妹穿的比我還像新娘。我一直安慰自己础爬,他們只是感情好甫贯,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著看蚜,像睡著了一般叫搁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上供炎,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天渴逻,我揣著相機與錄音,去河邊找鬼音诫。 笑死惨奕,一個胖子當著我的面吹牛,可吹牛的內容都是我干的竭钝。 我是一名探鬼主播梨撞,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼香罐!你這毒婦竟也來了卧波?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤庇茫,失蹤者是張志新(化名)和其女友劉穎港粱,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旦签,經...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡啥容,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了顷霹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咪惠。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖淋淀,靈堂內的尸體忽然破棺而出遥昧,到底是詐尸還是另有隱情覆醇,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布炭臭,位于F島的核電站永脓,受9級特大地震影響,放射性物質發(fā)生泄漏鞋仍。R本人自食惡果不足惜常摧,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望威创。 院中可真熱鬧落午,春花似錦、人聲如沸肚豺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吸申。三九已至梗劫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間截碴,已是汗流浹背梳侨。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留日丹,地道東北人走哺。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像聚凹,于是被迫代替她去往敵國和親割坠。 傳聞我的和親對象是個殘疾皇子齐帚,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內容