Spring Bean 生命週期之destroy——終極信仰

上一篇文章 Spring Bean 生命週期之我從哪裏來 說明了我是誰?我從哪裏來? 的兩大哲學問題,今天我們要討論一下終極哲學我要到哪裏去?
Spring Bean 生命週期之destroy——終極信仰 [center]
初始化 Spring Bean 有三種方式:

  1. @PostConstruct
  2. InitializingBean.afterPropertiesSet()
  3. init-method

銷燬 Spring Bean 同樣有三種方式:

  1. @PreDestroy
  2. DisposableBean.destroy()
  3. destroy-method

正所謂,天對地,雨對風; @PostConstruct 對 @PreDestroy;InitializingBean.afterPropertiesSet() 對 DisposableBean.destroy(); init-method 對 destroy-method;雷隱隱,霧濛濛;山花對海樹,赤日對蒼穹;平仄平仄平平仄,仄平仄平仄仄平,仄仄平……

Spring Bean 生命週期之destroy——終極信仰

感覺講到這沒必要講下去了,一切清晰明瞭,但我還有話要說

Spring Bean 生命週期之destroy——終極信仰

當 Spring Ioc 容器要移除 bean 時,銷燬相關回調方法將會被執行,這麼做的目的時釋放被 bean 持有的資源,或者去執行一些終極任務. 當 ApplicationContext 調用 registerShutdownHook 方法時,這些銷燬方法就會被觸發,但一般正常的業務中很少會用到這些方法
Spring Bean 生命週期之destroy——終極信仰

接下來具體的展示一下三種方法的使用方式

三種銷燬 Spring Bean 的方式

DisposableBean

Spring 爲我們提供了 DisposableBean 接口

Spring Bean 生命週期之destroy——終極信仰

我們可以通過實現 DisposableBean 接口,在其唯一方法 destroy 內完成 bean 銷燬的工作,但是 Spring Framework 官方並不建議我們通過這種方法來銷燬 bean,這同樣是一種強耦合的方式,我們看到框架層面纔會用到這個方法。

@PreDestroy

這種方式是 Spring 非常提倡的一種方式,我們通常將其標記在方法上即可,通常習慣將這個方法起名爲 destory()

Spring Bean 生命週期之destroy——終極信仰

destroy-method

同樣是兩種方式,第一種方式:

Spring Bean 生命週期之destroy——終極信仰

第二種方式

Spring Bean 生命週期之destroy——終極信仰

以上三種 Bean 的銷燬方式也是可以組合使用的,那麼組合在一起的調用順序是什麼呢?

  1. 首先 @PreDestroy 會被調用
  2. 其次 DisposableBean.destroy() 會被調用
  3. 最後調用通過 XML 配置的 destroy-method 方法或通過設置 @Bean 註解 設置 destroyMethod 屬性的方法

用圖示來說明一下調用順序

Spring Bean 生命週期之destroy——終極信仰

這個調用順序也不難記憶

PreDestroy (P),destroy (D),destroy-method (D) ---> PDD (那個3億人都在 pin 的那個 APP 名稱,目前 3 億人中沒有我)

再來看看 Spring Bean 生命週期圖,我們已經點亮了核心部分:

Spring Bean 生命週期之destroy——終極信仰

我們要注意,在銷燬的過程並沒有類似 BeanPostProcess 那中切面的思想,這裏要注意到區別。

靈魂追問

  1. 在閱讀框架源碼時,哪些地方用到了 bean 的銷燬方法?
  2. 還沒有被點亮的地方,你認爲還有哪些內容沒有做?

提高效率工具

Spring Bean 生命週期之destroy——終極信仰


推薦閱讀


歡迎持續關注公衆號:「日拱一兵」

  • 前沿 Java 技術乾貨分享
  • 高效工具彙總
  • 面試問題分析與解答
  • 技術資料領取

後續會出一系列文章點亮上圖,同時進行 Spring 知識點解釋與串聯,在工作中充分利用 Spring 的特性
另外,還會推出 Java 多線程與 ElasticSearch 相關內容

持續關注,帶你像讀偵探小說一樣輕鬆趣味學習 Java 技術棧相關知識

Spring Bean 生命週期之destroy——終極信仰

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章