Spring的Bean生命週期理解

  首先,在經歷過不少次的面試以後,一直不能很好的敘述關於springbean的生命週期這個概念。今日對於springBean的生命週期進行一個總結。面試

1、springBean的生命週期:

  以下圖所示:spring

經過這張圖能大體看懂spring的生命週期,詳解:函數

  1. instantiate bean對象實例化
  2. populate properties 封裝屬性
  3. 若是Bean實現BeanNameAware執行setBeanName
  4. 若是Bean實現BeanFactoryAwarApplicationContextAwar設置工廠setBeanFactory或上下文對象setApplicationContext
  5. 若是存在類實現BeanPostProcessor(後處理Bean),執行postProcessBeforeInitialization
  6. 若是Bean實現InitializingBean執行afterPropertiesSet
  7. 調用自定義的init-method方法
  8. 若是存在類實現BeanPostProcessor(處理Bean),執行postProcessAfterInitialization
  9. 執行業務處理
  10. 若是Bean實現DisposableBean執行destroy
  11. 調用自定義的destroy-method

  第一步就是對實例化bean,調用構造函數來建立實例,第二步是根據配置,進行相應屬性的設置,依賴注入就是在這一步完成的。post

  第三步和第四步是讓spring去了解我們的spring容器,第五步和第八步能夠針對指定的Bean進行功能加強,這時通常是採用的動態代理,(兩種動態代理方式:jdk動態代理和cglib動態代理)。第六步和第十步是經過實現指定的接口來完成init(初始化)和destory(銷燬)操做。可是咱們在一般狀況下不會使用這兩步,由於咱們能夠經過第七步和第十一步,在配置文件中設置相應的初始化和銷燬方法。spa

  好比:代理

  總結:對象

    對於springbean的生命週期,咱們須要關注的主要有兩個方法:blog

      1.加強bean的功能可使用後處理Bean,BeanPostProcessor接口

      2.若是須要初始化或銷燬操做,咱們可使用init-method方法和destory-method方法。生命週期

  同時還須要注意一點:destory-method方法是隻針對於scope=singleton的時候纔有效果!

相關文章
相關標籤/搜索