Spring中Bean的生命周期

BeanFactory和ApplicationContext是Spring中兩種很重要的容器,前者提供了最基本的依賴注入的支持,后者在繼承前者的基礎(chǔ)上進(jìn)行了功能的拓展秸妥,增加了事件傳播淑掌,資源訪問顶捷,國際化的支持等功能达椰。同時兩者的生命周期也稍微有些不同翰蠢。

BeanFactory中Bean的生命周期

  1. 容器尋找Bean的定義信息,并將其實(shí)例化砰碴。
  2. 使用依賴注入躏筏,Spring按照Bean定義信息配置Bean的所有屬性。
  3. 如果Bean實(shí)現(xiàn)了BeanNameAware接口呈枉,工廠調(diào)用Bean的setBeanName()方法傳遞Bean的id趁尼。
  4. 如果實(shí)現(xiàn)了BeanFactoryAware接口,工廠調(diào)用setBeanFactory()方法傳入工廠自身猖辫。
  5. 如果BeanPostProcessor和Bean關(guān)聯(lián)酥泞,那么它們的postProcessBeforeInitialization()方法將被調(diào)用。(需要手動進(jìn)行注冊?性鳌)
  6. 如果Bean實(shí)現(xiàn)了InitializingBean接口芝囤,則會回調(diào)該接口的afterPropertiesSet()方法。
  7. 如果Bean指定了init-method方法辛萍,就會調(diào)用init-method方法悯姊。
  8. 如果BeanPostProcessor和Bean關(guān)聯(lián),那么它的postProcessAfterInitialization()方法將被調(diào)用贩毕。(需要手動注冊C跣怼)
  9. 現(xiàn)在Bean已經(jīng)可以使用了。
    1. scope為singleton的Bean緩存在Spring IOC容器中辉阶。
    2. scope為prototype的Bean生命周期交給客戶端先壕。
  10. 銷毀。
  11. 如果Bean實(shí)現(xiàn)了DisposableBean接口谆甜,destory()方法將會被調(diào)用垃僚。
  12. 如果配置了destory-method方法,就調(diào)用這個方法规辱。

ApplicationContext中Bean的生命周期

  1. 容器尋找Bean的定義信息谆棺,并將其實(shí)例化。會對scope為singleton且非懶加載的bean進(jìn)行實(shí)例化
  2. 使用依賴注入罕袋,Spring按照Bean定義信息配置Bean的所有屬性改淑。
  3. 如果Bean實(shí)現(xiàn)了BeanNameAware接口,工廠調(diào)用Bean的setBeanName()方法傳遞Bean的id炫贤。
  4. 如果實(shí)現(xiàn)了BeanFactoryAware接口溅固,工廠調(diào)用setBeanFactory()方法傳入工廠自身付秕。
  5. 如果實(shí)現(xiàn)了ApplicationContextAware接口兰珍,會調(diào)用該接口的setApplicationContext()方法,傳入該Bean的ApplicationContext询吴,這樣該Bean就獲得了自己所在的ApplicationContext掠河。
  6. 如果Bean實(shí)現(xiàn)了BeanPostProcessor接口亮元,則調(diào)用postProcessBeforeInitialization()方法。
  7. 如果Bean實(shí)現(xiàn)了InitializingBean接口唠摹,則會回調(diào)該接口的afterPropertiesSet()方法爆捞。
  8. 如果Bean制定了init-method方法,就會調(diào)用init-method方法勾拉。
  9. 如果Bean實(shí)現(xiàn)了BeanPostProcessor接口煮甥,則調(diào)用postProcessAfterInitialization()方法。
  10. 現(xiàn)在Bean已經(jīng)可以使用了藕赞。
    1. scope為singleton的Bean緩存在Spring IOC容器中成肘。
    2. scope為prototype的Bean生命周期交給客戶端。
  11. 銷毀斧蜕。
    1. 如果Bean實(shí)現(xiàn)了DisposableBean接口双霍,destory()方法將會被調(diào)用。
    2. 如果配置了destory-method方法批销,就調(diào)用這個方法洒闸。

兩種容器中的不同之處

  1. BeanFactory容器中不會調(diào)用ApplicationContext接口的setApplicationContext()方法。
  2. BeanFactory中BeanPostProcessor接口的postProcessBeforeInitialzation()方法和postProcessAfterInitialization()方法不會自動調(diào)用均芽,必須自己通過代碼手動注冊丘逸。
  3. BeanFactory容器啟動的時候,不會去實(shí)例化所有Bean,包括所有scope為singleton且非懶加載的Bean也是一樣骡技,而是在調(diào)用的時候去實(shí)例化鸣个。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市布朦,隨后出現(xiàn)的幾起案子囤萤,更是在濱河造成了極大的恐慌,老刑警劉巖是趴,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涛舍,死亡現(xiàn)場離奇詭異,居然都是意外死亡唆途,警方通過查閱死者的電腦和手機(jī)富雅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肛搬,“玉大人没佑,你說我怎么就攤上這事∥屡猓” “怎么了蛤奢?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我啤贩,道長待秃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任痹屹,我火速辦了婚禮章郁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘志衍。我一直安慰自己暖庄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布楼肪。 她就那樣靜靜地躺著雄驹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪淹辞。 梳的紋絲不亂的頭發(fā)上医舆,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機(jī)與錄音象缀,去河邊找鬼蔬将。 笑死,一個胖子當(dāng)著我的面吹牛央星,可吹牛的內(nèi)容都是我干的霞怀。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼莉给,長吁一口氣:“原來是場噩夢啊……” “哼毙石!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起颓遏,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤徐矩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后叁幢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滤灯,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年曼玩,在試婚紗的時候發(fā)現(xiàn)自己被綠了鳞骤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡黍判,死狀恐怖豫尽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情顷帖,我是刑警寧澤美旧,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布庭猩,位于F島的核電站,受9級特大地震影響陈症,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜震糖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一录肯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吊说,春花似錦论咏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至雅宾,卻和暖如春养涮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背眉抬。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工贯吓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蜀变。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓悄谐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親库北。 傳聞我的和親對象是個殘疾皇子爬舰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Spring中的Bean對象通過繼承一系列接口,以及在ApplicationContext.xml文件中配置寒瓦,可以...
    雁歸來兮閱讀 575評論 0 3
  • 什么是Spring Spring是一個開源的Java EE開發(fā)框架情屹。Spring框架的核心功能可以應(yīng)用在任何Jav...
    jemmm閱讀 16,475評論 1 133
  • 1- IOC的概念 IOC:也即控制反轉(zhuǎn),DI即依賴注入杂腰,控制反轉(zhuǎn)IOC和依賴注入DI其實(shí)就是同個概念的兩個不同...
    zhanglbjames閱讀 3,022評論 1 3
  • CAP分布式理論 2002年CAP理論正式成為分布式計算領(lǐng)域的公認(rèn)定理 CAP指一致性(Consisitency)...
    frmark閱讀 612評論 0 0
  • 早上好颈墅,清醒的一天蜡镶,耳邊聽著優(yōu)美的英文歌曲,很喜歡never say never恤筛。這周開始嘗試自己的學(xué)習(xí)計劃官还,即是...
    小馬克Wel閱讀 167評論 0 0