我們可以自定義bean的初始化和銷毀方法,這里所指的的初始化和bean的構造不同,初始化是在bean構造完成后,對bean內部的屬性或一些邏輯進行初始化,
首先要弄清一些概念:
- 構造(物件創建)
- 單實體:在容器啟動時創建物件
- 多實體:在每次獲取的時候創建物件
- 初始化:在物件創建后呼叫
- 銷毀:
- 單實體:在容器關閉時執行銷毀方法
- 多實體:容器不會管理,不會呼叫銷毀方法
下面提供幾種方法供參考
一、指定初始化和銷毀方法
在配置類中,我們可以通過@Bean指定initMethod 和destroyMethod ,分別指向類中的初始化和銷毀方法,
二、實作InitializingBean和DisposableBean
實作介面中的InitializingBean(定義初始化邏輯)和destroy(定義銷毀邏輯)方法即可,
三、通過@PostConstruct和@PreDestroy注解
在初始化和銷毀方法上分別添加@PostConstruct和@PreDestroy注解,這樣就能給Bean實作初始化和銷毀,
四、后置處理器及其原理
后置處理器含義如下兩個方法postProcessBeforeInitialization和postProcessAfterInitialization,分別會在初始化前和初始化后執行,


實作邏輯
BeanFactory在創建bean時,會先呼叫initializeBean方法進行初始化,并在初始化前獲取到所有后置處理器,并執行后置處理器的postProcessBeforeInitialization方法,
執行完所有后置處理器的postProcessBeforeInitialization方法后,接著BeanFactory將執行完初始化,
初始化完成后,繼續獲取所有的后置處理器,回圈執行所有的postProcessAfterInitialization方法,
方法三的實作邏輯也是通過后置處理器來完成的,
在執行postProcessBeforeInitialization時,會掃描標注有@PostConstruct注解的方法的類,最終定位到對應方法并執行,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/12466.html
標籤:架構設計
上一篇:高可用+可伸縮存盤方案
下一篇:質量屬性
