Spring——管理Bean的生命周期


我們可以自定義bean的初始化和銷毀方法,這里所指的的初始化和bean的構造不同,初始化是在bean構造完成后,對bean內部的屬性或一些邏輯進行初始化。

首先要弄清一些概念:

  1. 構造(對象創建)    
    1. 單實例:在容器啟動時創建對象
    2. 多實例:在每次獲取的時候創建對象
  2. 初始化:在對象創建后調用
  3. 銷毀:
    1. 單實例:在容器關閉時執行銷毀方法
    2. 多實例:容器不會管理,不會調用銷毀方法

 


下面提供幾種方法供參考

 

一、指定初始化和銷毀方法

  在配置類中,我們可以通過@Bean指定initMethod 和destroyMethod ,分別指向類中的初始化和銷毀方法。

 

二、實現InitializingBean和DisposableBean

  實現接口中的InitializingBean(定義初始化邏輯)和destroy(定義銷毀邏輯)方法即可。

 

三、通過@PostConstruct和@PreDestroy注解

  在初始化和銷毀方法上分別添加@PostConstruct和@PreDestroy注解,這樣就能給Bean實現初始化和銷毀。

 

四、后置處理器及其原理

后置處理器含義如下兩個方法postProcessBeforeInitialization和postProcessAfterInitialization,分別會在初始化前和初始化后執行。

 

實現邏輯

BeanFactory在創建bean時,會先調用initializeBean方法進行初始化,並在初始化前獲取到所有后置處理器,並執行后置處理器的postProcessBeforeInitialization方法。

執行完所有后置處理器的postProcessBeforeInitialization方法后,接着BeanFactory將執行完初始化。

初始化完成后,繼續獲取所有的后置處理器,循環執行所有的postProcessAfterInitialization方法。


 方法三的實現邏輯也是通過后置處理器來完成的。

在執行postProcessBeforeInitialization時,會掃描標注有@PostConstruct注解的方法的類,最終定位到對應方法並執行。

 


免責聲明!

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



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