成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

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

JouyPub / 3229人閱讀

摘要:上一篇文章生命周期之我從哪里來(lái)說(shuō)明了我是誰(shuí)和我從哪里來(lái)的兩大哲學(xué)問(wèn)題,今天我們要討論一下終極哲學(xué)我要到哪里去初始化有三種方式銷毀同樣有三種方式正所謂,天對(duì)地,雨對(duì)風(fēng)對(duì)對(duì)對(duì)雷隱隱,霧蒙蒙山花對(duì)海樹,赤日對(duì)蒼穹平仄平仄平平仄,仄平仄平仄

上一篇文章 Spring Bean 生命周期之我從哪里來(lái) 說(shuō)明了我是誰(shuí)?我從哪里來(lái)? 的兩大哲學(xué)問(wèn)題,今天我們要討論一下終極哲學(xué)我要到哪里去?

初始化 Spring Bean 有三種方式:

@PostConstruct

InitializingBean.afterPropertiesSet()

init-method

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

@PreDestroy

DisposableBean.destroy()

destroy-method

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

感覺(jué)講到這沒(méi)必要講下去了,一切清晰明了,但我還有話要說(shuō)

當(dāng) Spring Ioc 容器要移除 bean 時(shí),銷毀相關(guān)回調(diào)方法將會(huì)被執(zhí)行,這么做的目的時(shí)釋放被 bean 持有的資源,或者去執(zhí)行一些終極任務(wù). 當(dāng) ApplicationContext 調(diào)用 registerShutdownHook 方法時(shí),這些銷毀方法就會(huì)被觸發(fā),但一般正常的業(yè)務(wù)中很少會(huì)用到這些方法

接下來(lái)具體的展示一下三種方法的使用方式

三種銷毀 Spring Bean 的方式 DisposableBean

Spring 為我們提供了 DisposableBean 接口

我們可以通過(guò)實(shí)現(xiàn) DisposableBean 接口,在其唯一方法 destroy 內(nèi)完成 bean 銷毀的工作,但是 Spring Framework 官方并不建議我們通過(guò)這種方法來(lái)銷毀 bean,這同樣是一種強(qiáng)耦合的方式,我們看到框架層面才會(huì)用到這個(gè)方法。

@PreDestroy

這種方式是 Spring 非常提倡的一種方式,我們通常將其標(biāo)記在方法上即可,通常習(xí)慣將這個(gè)方法起名為 destory()

destroy-method

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

第二種方式

以上三種 Bean 的銷毀方式也是可以組合使用的,那么組合在一起的調(diào)用順序是什么呢?

首先 @PreDestroy 會(huì)被調(diào)用

其次 DisposableBean.destroy() 會(huì)被調(diào)用

最后調(diào)用通過(guò) XML 配置的 destroy-method 方法或通過(guò)設(shè)置 @Bean 注解 設(shè)置 destroyMethod 屬性的方法

用圖示來(lái)說(shuō)明一下調(diào)用順序

這個(gè)調(diào)用順序也不難記憶

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

再來(lái)看看 Spring Bean 生命周期圖,我們已經(jīng)點(diǎn)亮了核心部分:

我們要注意,在銷毀的過(guò)程并沒(méi)有類似 BeanPostProcess 那中切面的思想,這里要注意到區(qū)別。

靈魂追問(wèn)

在閱讀框架源碼時(shí),哪些地方用到了 bean 的銷毀方法?

還沒(méi)有被點(diǎn)亮的地方,你認(rèn)為還有哪些內(nèi)容沒(méi)有做?

提高效率工具

推薦閱讀

面試還不知道 BeanFactory 和 ApplicationContext 的區(qū)別?

Spring Bean 生命周期之"我從哪里來(lái)?",懂得這個(gè)很重要

Spring Bean 生命周期之"我要到哪里去?"

如何設(shè)計(jì)好的RESTful API

輕松高效玩轉(zhuǎn)DTO(Data Transfer Object)

歡迎持續(xù)關(guān)注公眾號(hào):「日拱一兵」

前沿 Java 技術(shù)干貨分享

高效工具匯總

面試問(wèn)題分析與解答

技術(shù)資料領(lǐng)取

后續(xù)會(huì)出一系列文章點(diǎn)亮上圖,同時(shí)進(jìn)行 Spring 知識(shí)點(diǎn)解釋與串聯(lián),在工作中充分利用 Spring 的特性
另外,還會(huì)推出 Java 多線程與 ElasticSearch 相關(guān)內(nèi)容

持續(xù)關(guān)注,帶你像讀偵探小說(shuō)一樣輕松趣味學(xué)習(xí) Java 技術(shù)棧相關(guān)知識(shí)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/75307.html

相關(guān)文章

  • Spring Aware 到底是什么?

    摘要:代碼示例自定義實(shí)現(xiàn)注冊(cè)運(yùn)行和預(yù)想一樣,輸出結(jié)果為,如果移除掉注解的屬性,輸出結(jié)果為總結(jié)在大多數(shù)情況下,我們應(yīng)該避免使用任何接口,除非我們需要它們。 showImg(https://segmentfault.com/img/remote/1460000019807821?w=1920&h=1080); 通過(guò)如下前序兩篇文章: Spring Bean 生命周期之我從哪里來(lái)? Spring...

    mingzhong 評(píng)論0 收藏0
  • Learn Spring - Spring IoC

    摘要:事件事件監(jiān)聽器,對(duì)監(jiān)聽到的事件進(jìn)行處理。擁有一個(gè)成員變量,提供了容器監(jiān)聽器的注冊(cè)表。注冊(cè)事件監(jiān)聽器根據(jù)反射機(jī)制,使用的方法,從中找出所有實(shí)現(xiàn)的,將它們注冊(cè)為容器的事件監(jiān)聽器,實(shí)際的操作就是將其添加到事件廣播器所提供的監(jiān)聽器注冊(cè)表中。 1. Spring的資源抽象接口 假如有一個(gè)文件位于Web應(yīng)用的類路徑下,用戶可以通過(guò)以下方式對(duì)這個(gè)文件資源進(jìn)行訪問(wèn): 通過(guò)FileSystemReso...

    luzhuqun 評(píng)論0 收藏0
  • spring提供的關(guān)于bean生命周期的接口

    摘要:在中注入注入運(yùn)行結(jié)果注入使用注解正如其名在構(gòu)造器之后,即在銷毀之前。調(diào)用的方法構(gòu)造器注入屬性注入顧名思義,在這個(gè)方法里面可以拿到所有裝載的并在初始化之前對(duì)某些進(jìn)行修改。 先看一張圖:spring4.x 企業(yè)實(shí)戰(zhàn) showImg(https://segmentfault.com/img/bVbbO72?w=608&h=502); spring版本:4.3.171、bean自身的生命周期接...

    Cciradih 評(píng)論0 收藏0
  • Spring詳解2.理解IoC容器

    摘要:目前建議使用與。入?yún)⑹钱?dāng)前正在處理的,是當(dāng)前的配置名,返回的對(duì)象為處理后的。如果,則將放入容器的緩存池中,并返回。和這兩個(gè)接口,一般稱它們的實(shí)現(xiàn)類為后處理器。體系結(jié)構(gòu)讓容器擁有了發(fā)布應(yīng)用上下文事件的功能,包括容器啟動(dòng)事件關(guān)閉事件等。 點(diǎn)擊進(jìn)入我的博客 1 如何理解IoC 1.1 依然是KFC的案例 interface Burger { int getPrice(); } in...

    Ververica 評(píng)論0 收藏0
  • Bean生命周期回調(diào)

    摘要:如果該方法的返回值代替原本該生成的目標(biāo)對(duì)象,后續(xù)只有方法會(huì)調(diào)用,其它方法不再調(diào)用否則按照正常的流程走方法在目標(biāo)對(duì)象實(shí)例化之后調(diào)用,這個(gè)時(shí)候?qū)ο笠呀?jīng)被實(shí)例化,但是該實(shí)例的屬性還未被設(shè)置,都是。 我們可能會(huì)在 Bean 對(duì)象創(chuàng)建完成后, 執(zhí)行某些操作或在銷毀前做某些操作. 我們可以實(shí)現(xiàn) InitializingBean 或 DisposableBean 接口 public class Te...

    xorpay 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<