Spring精髓(一)-Spring核心組件裝配流程解析


我準(zhǔn)備戰(zhàn)斗到最后叛本,不是因為我勇敢,是我想見證一切彤钟。 --雙雪濤《獵人》


[TOC]
Thinking

  1. 一個技術(shù)来候,為什么要用它,解決了那些問題逸雹?
  2. 如果不用會怎么樣营搅,有沒有其它的解決方法?
  3. 對比其它的解決方案梆砸,為什么最終選擇了這種转质,都有何利弊?
  4. 你覺得項目中還有那些地方可以用到帖世,如果用了會帶來那些問題休蟹?
  5. 這些問題你又如何去解決的呢?

本文主要基于 Spring 5.2.7.BUILD-SNAPSHOT

春天這么春天日矫,冬天還會遠(yuǎn)嗎赂弓?Fuker!D慕巍盈魁!

提到Spring 總是第一時間想到它的集大成者,優(yōu)雅且高效窃诉,提供的各種好用的功能备埃,Ioc,DI等褐奴。

其實看似非常智能的Spring按脚,做的每一步,都是各種代碼配合著敦冬,勤勤懇懇的在底層工作著辅搬。

1、Spring核心組件裝配流程解析

首先思考一下脖旱,Spring要想實現(xiàn)所有的功能堪遂。如果是你,具體要做什么萌庆,

  1. 首先要讀取配置文件吧(不管是xml還是注解溶褪,都要獲取到該讀取的配置文件吧!)
  2. 讀取到配置文件之后呢践险?要加載解析吧
  3. 解析完成猿妈,才能做具體的操作吧

那么來看看spring具體的做法鴨4盗狻!彭则!

1.1鳍刷、Spring核心組件裝配流程文字解釋

  1. 需要將bean的定義信息聲明在Spring的配置文件中。(運行代碼之前)
  2. 需要通過Spring抽象出各種Resource來指定對應(yīng)的配置文件俯抖。
  3. 需要顯式申明一個Spring工廠输瓜,該工廠用來掌控我們在配置文件中鎖聲明的各種bean以及bean之間的依賴關(guān)系與注入關(guān)系
  4. 需要定義一個配置信息讀取器,該讀取器用來讀取之前所定義的bean配置文件信息
  5. 讀取器的作用是讀取我們所聲明的配置文件信息芬萍,并且將讀取后的信息裝配到之前所有聲明的工廠當(dāng)中
  6. 需要將讀取器與工廠以及資源對象進(jìn)行相應(yīng)的關(guān)聯(lián)處理尤揣。
  7. 工廠管理的全部對象裝配完畢,可以供客戶端直接調(diào)用柬祠,獲取客戶端想要使用的各種bean對象

總結(jié)為一下三個步驟

  1. 資源抽象
  2. 工廠
  3. 配置信息讀取器

Spring 將上述的所有功能都抽取出來芹缔,在2001年的時候就有如此優(yōu)秀且先進(jìn)的想法真的牛!

spring 最頂層的抽象 :org.springframework.beans.factory.BeanFactory類似于java中的java.lang.Object

Spring 的 資源訪問 頂層接口:{@link Resource}

1.2瓶盛、思想落地到代碼上

使用的xml的方式

// 獲取 xml文件,創(chuàng)建獲取資源文件
Resource resource = new ClassPathResource("applicationContext.xml");

// 很早之前是使用xmlBeanFactory, 因為這種工廠spring意識到功能太單一了最欠。
//XmlBeanFactory xmlBeanFactory = new XmlBeanFactory(resource);

// spring中一般都是使用工廠來加載文件的
DefaultListableBeanFactory defaultListableBeanFactory = new DefaultListableBeanFactory();

BeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(defaultListableBeanFactory);

beanDefinitionReader.loadBeanDefinitions(resource);

// 上述所有的步驟是完成了 資源的解析,工廠的裝配

// 下面的步驟就是使用工廠 提取具體的bean信息

Student student = (Student) defaultListableBeanFactory.getBean("student");

System.out.println(student);
  • 在后面惩猫,會圍繞著上面簡單的代碼芝硬,逐步的分析Spring的底層源碼。
  • 建議閱讀《Spring源碼深度解析 2》

源碼地址

本文僅供筆者本人學(xué)習(xí)轧房,一起進(jìn)步拌阴!

加油!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奶镶,一起剝皮案震驚了整個濱河市迟赃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌厂镇,老刑警劉巖纤壁,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異捺信,居然都是意外死亡酌媒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門迄靠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秒咨,“玉大人,你說我怎么就攤上這事掌挚∮晗” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵吠式,是天一觀的道長陡厘。 經(jīng)常有香客問我抽米,道長,這世上最難降的妖魔是什么雏亚? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮摩钙,結(jié)果婚禮上罢低,老公的妹妹穿的比我還像新娘。我一直安慰自己胖笛,他們只是感情好网持,可當(dāng)我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著长踊,像睡著了一般功舀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上身弊,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天辟汰,我揣著相機(jī)與錄音,去河邊找鬼阱佛。 笑死帖汞,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的凑术。 我是一名探鬼主播翩蘸,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼淮逊!你這毒婦竟也來了催首?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤泄鹏,失蹤者是張志新(化名)和其女友劉穎郎任,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體备籽,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡涝滴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了胶台。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片歼疮。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖诈唬,靈堂內(nèi)的尸體忽然破棺而出韩脏,到底是詐尸還是另有隱情,我是刑警寧澤铸磅,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布赡矢,位于F島的核電站杭朱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏吹散。R本人自食惡果不足惜弧械,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望空民。 院中可真熱鬧刃唐,春花似錦、人聲如沸界轩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浊猾。三九已至抖甘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間葫慎,已是汗流浹背衔彻。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留偷办,地道東北人米奸。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像爽篷,于是被迫代替她去往敵國和親悴晰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,925評論 2 344