2020-08-23 spring生命周期

1.Spring bean的生命周期概括起來就是4個階段:
(1)實例化(Spring 容器實例化bean)
(2)屬性賦值(設(shè)置bean的相關(guān)屬性和依賴)
(3)初始化

  • 1.如果實現(xiàn)BeanNameAware接口,Spring 傳遞bean 的ID 到 setBeanName方法。
  • 2.如果實現(xiàn)BeanFactoryAware接口,Spring傳遞beanfactory 給setBeanFactory 方法。
  • 3.有任何與bean相關(guān)聯(lián)的BeanPostProcessors,Spring會在postProcesserBeforeInitialization()方法內(nèi)調(diào)用它們。
  • 4.如果實現(xiàn) initializingBean接口,調(diào)用此初始化方法。
  • 5.檢查是否有配置init-method方法,則執(zhí)行指定的初始化方法
  • 6.如果有BeanPostProcessors 和bean 關(guān)聯(lián),這些bean的postProcessAfterInitialization() 方法將被調(diào)用。
    (4)銷毀
  • 1.如果實現(xiàn)DisposableBean接口,執(zhí)行dispose方法
    -2.如果配置了自定義的destory-method,則執(zhí)行指定的銷毀方法
image.png

2.spring是如何解決循環(huán)依賴問題的?
(1)spring bean的初始化分為兩步:一是對象的創(chuàng)建,而是設(shè)置屬性值
(2)當創(chuàng)建A對象時,ApplicationContext.getBean()從容器中取不到A的對象,便開始創(chuàng)建對象。創(chuàng)建完后,賦屬性值b時,ApplicationContext.getBean()取不到b對象,于是去創(chuàng)建b對象。對象B創(chuàng)建完后,將半成品b賦值給A對象。然后當b對象賦值屬性a時,調(diào)用ApplicationContext.getBean()將a的屬性設(shè)置進b。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Bean的生命周期是Spring面試熱點問題。這個問題即考察對Spring的微觀了解,又考察對Spr...
    1234哦哦閱讀 1,044評論 0 8
  • 只有四個! 是的,Spring Bean的生命周期只有這四個階段。把這四個階段和每個階段對應(yīng)的擴展點糅合在一起雖然...
    EllisonPei閱讀 369評論 0 0
  • 在講springBean的生命周期之前首先來看一下Web容器啟動的時候,是如何去開啟Sping的整個流程。 隨著容...
    蘿灝閱讀 2,152評論 0 0
  • Spring Bean生命周期 1.BeanDefinition Spring中對象皆為bean,進而將bean的...
    Johar77閱讀 632評論 0 0
  • 前言 這其實是一道面試題,是我在面試百度的時候被問到的,當時沒有答出來(因為自己真的很菜),后來在網(wǎng)上尋找答案,看...
    java菜閱讀 397評論 0 3

友情鏈接更多精彩內(nèi)容