Spring的Bean生命周期理解


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

一、springBean的生命周期:

  如下圖所示:

通過這張圖能大致看懂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,調用構造函數來創建實例,第二步是根據配置,進行相應屬性的設置,依賴注入就是在這一步完成的。

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

  比如:

  總結:

    對於springbean的生命周期,我們需要關注的主要有兩個方法:

      1.增強bean的功能可以使用后處理Bean,BeanPostProcessor

      2.如果需要初始化或銷毀操作,我們可以使用init-method方法和destory-method方法。

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM