日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

什么是鉤子函數(shù),在學習鉤子函數(shù)之前,小編先提一個面試問題。

請問在Spring中,如果JVM異常終止,Spring是如何保證會釋放掉占用的資源,比如說數(shù)據(jù)庫連接等資源呢?

鉤子函數(shù)非常簡單,簡單到小編只用摘抄一段Spring代碼即可。走你,現(xiàn)在開始。

Spring 容器中 Bean 在什么時候執(zhí)行銷毀方法?

我們知道在Spring中定義銷毀方法有兩種方式

  1. 實現(xiàn) DisposableBean 的 destroy 方法。
  2. 使用 @PreDestroy 注解修飾方法
高級Java開發(fā)者都知道的Hook鉤子函數(shù),你還不知道嗎?

 

那么在什么時候執(zhí)行銷毀方法?

高級Java開發(fā)者都知道的Hook鉤子函數(shù),你還不知道嗎?

 

  • 主動執(zhí)行銷毀bean
高級Java開發(fā)者都知道的Hook鉤子函數(shù),你還不知道嗎?

 

  • JVM關閉時候自動執(zhí)行銷毀方法。

這里就要用到鉤子函數(shù)了, Spring 的鉤子函數(shù)在 AbstractApplicationContext#shutdownHook屬性。

如果我們是SpringBoot項目我們看到在SpringApplication啟動時候會注冊一個鉤子函數(shù)

高級Java開發(fā)者都知道的Hook鉤子函數(shù),你還不知道嗎?

 

如何定義鉤子函數(shù)?

簡直太簡單了,沒有任何學習成本。一行代碼就能搞定。

高級Java開發(fā)者都知道的Hook鉤子函數(shù),你還不知道嗎?

 


高級Java開發(fā)者都知道的Hook鉤子函數(shù),你還不知道嗎?

 

觸發(fā)鉤子函數(shù)的場景

只要不是機器斷電,強制kill -9 強制殺進程,都會觸發(fā)。

高級Java開發(fā)者都知道的Hook鉤子函數(shù),你還不知道嗎?

 

鉤子函數(shù)能做什么?

高級Java開發(fā)者都知道的Hook鉤子函數(shù),你還不知道嗎?

 

正如上圖所示優(yōu)雅停機,在項目將要關閉時候,主動釋放程序占用的資源信息,釋放db連接池的連接等其他占用的資源信息。 如果我們是 Spring 項目其實我們不用自己定義鉤子函數(shù),我們只要使用Spring提供給我們的銷毀方法即可。因為 Spring定義的鉤子函數(shù)中會去執(zhí)行, DisposableBean.destory() 和被 PreDestroy 修飾的方法。

高級Java開發(fā)者都知道的Hook鉤子函數(shù),你還不知道嗎?

 

doClose()方法會執(zhí)行bean的destroy(),也會執(zhí)行SmartLifeCycle的stop()方法,我們就可以通過重寫這些方法來實現(xiàn)對象的關閉,生命周期的管理,實現(xiàn)平滑shutdown。

分享到:
標簽:鉤子 函數(shù) Hook
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定