Spring架構(gòu)揭秘-事件監(jiān)聽機(jī)制-創(chuàng)新互聯(lián)

一、事件監(jiān)聽機(jī)制概述

創(chuàng)新互聯(lián)公司2013年成立,先為嘉禾等服務(wù)建站,嘉禾等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為嘉禾企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

二、事件監(jiān)聽機(jī)制結(jié)構(gòu)

三、Spring監(jiān)聽機(jī)制架構(gòu)

     Spring的Application擁有發(fā)布事件并且注冊事件監(jiān)聽器的能力,擁有一套完整的事件發(fā)布和監(jiān)聽機(jī)制。在Java中,通過java.util. EventObject來描述事件,通過java.util. EventListener來描述事件監(jiān)聽器,在眾多的框架和組件中,建立一套事件機(jī)制通常是基于這兩個(gè)接口來進(jìn)行擴(kuò)展。

  在一個(gè)事件體系中,有以下幾個(gè)重要的概念。

1、事件源:事件對象的產(chǎn)生者,任何一個(gè)EventObject都有一個(gè)來源

2、事件監(jiān)聽器注冊表:當(dāng)事件框架或組件收到一個(gè)事件后,需要通知所有相關(guān)的事件監(jiān)聽器來進(jìn)行處理,這個(gè)時(shí)候就需要有個(gè)存儲(chǔ)監(jiān)聽器的地方,也就是事件監(jiān)聽器注冊表。

3、事件廣播器:事件廣播器在整個(gè)事件機(jī)制中扮演一個(gè)中介的角色,當(dāng)事件發(fā)布者發(fā)布一個(gè)事件后,就需要通過廣播器來通知所有相關(guān)的監(jiān)聽器對該事件進(jìn)行處理。

下圖就是事件機(jī)制的結(jié)構(gòu)圖下載

Spring架構(gòu)揭秘-事件監(jiān)聽機(jī)制

Spring事件發(fā)布機(jī)制

   在Spring中,事件機(jī)制大概也是這么個(gè)結(jié)構(gòu),具體的實(shí)現(xiàn)采用觀察者模式。下面我們來看看Spring的事件機(jī)制設(shè)計(jì)類圖下載

Spring架構(gòu)揭秘-事件監(jiān)聽機(jī)制

1、ApplicationEventPublisher是Spring的事件發(fā)布接口,事件源通過該接口的pulishEvent方法發(fā)布事件。

2、ApplicationEventMulticaster就是Spring事件機(jī)制中的事件廣播器,它默認(rèn)提供一個(gè)SimpleApplicationEventMulticaster實(shí)現(xiàn),如果用戶沒有自定義廣播器,則使用默認(rèn)的。它通過父類AbstractApplicationEventMulticaster的getApplicationListeners方法從事件注冊表中獲取事件監(jiān)聽器,并且通過invokeListener方法執(zhí)行監(jiān)聽器的具體邏輯

3、ApplicationListener就是Spring的事件監(jiān)聽器接口,所有的監(jiān)聽器都實(shí)現(xiàn)該接口,本圖中列出了典型的幾個(gè)子類。其中RestartApplicationListnener在SpringBoot的啟動(dòng)框架中就有使用下載

4、在Spring中通常是ApplicationContext本身擔(dān)任監(jiān)聽器注冊表的角色,在其子類AbstractApplicationContext中就聚合了事件廣播器ApplicationEventMulticaster和事件監(jiān)聽器ApplicationListnener,并且提供注冊監(jiān)聽器的addApplicationListnener方法。

   通過上圖就能較清晰的知道當(dāng)一個(gè)事件源產(chǎn)生事件時(shí),它通過事件發(fā)布器ApplicationEventPublisher發(fā)布事件,然后事件廣播器ApplicationEventMulticaster會(huì)去事件注冊表ApplicationContext中找到事件監(jiān)聽器ApplicationListnener,并且逐個(gè)執(zhí)行監(jiān)聽器的onApplicationEvent方法,從而完成事件監(jiān)聽器的邏輯。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享標(biāo)題:Spring架構(gòu)揭秘-事件監(jiān)聽機(jī)制-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://bm7419.com/article42/cdipec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)站導(dǎo)航、網(wǎng)站設(shè)計(jì)公司、營銷型網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營