国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站建設(shè)難點(diǎn)網(wǎng)站推廣優(yōu)化設(shè)計(jì)方案

網(wǎng)站建設(shè)難點(diǎn),網(wǎng)站推廣優(yōu)化設(shè)計(jì)方案,南通高端網(wǎng)站建設(shè),戚墅堰做網(wǎng)站ApplicationListener是spring boot應(yīng)用啟動(dòng)時(shí)的事件監(jiān)聽器。監(jiān)聽的事件有&#xff08;包括但不限于&#xff09;&#xff1a; &#xff08;1&#xff09;接下來&#xff0c;我們先通過一個(gè)例子實(shí)現(xiàn)自定義ApplicationListener&#xff1a; 監(jiān)聽器需要實(shí)現(xiàn)ApplicationListener<…

ApplicationListener是spring boot應(yīng)用啟動(dòng)時(shí)的事件監(jiān)聽器。監(jiān)聽的事件有(包括但不限于):

(1)接下來,我們先通過一個(gè)例子實(shí)現(xiàn)自定義ApplicationListener:

監(jiān)聽器需要實(shí)現(xiàn)ApplicationListener<T>,參數(shù)類型為ApplicationEvent,表示監(jiān)聽所有事件,當(dāng)然也可以將參數(shù)類型設(shè)置為單獨(dú)的事件,下面這個(gè)只會接收ApplicationEnvironmentPreparedEvent事件:

(2)定義了監(jiān)聽器后,還需要配置一下,讓spring boot啟動(dòng)時(shí)加載它,即配置"context.listener.classes"

(3)啟動(dòng)后可以看到,監(jiān)聽器監(jiān)聽了如下事件:

(4)源碼分析,我們來看看自定義的監(jiān)聽器是怎么工作的:

ApplicationListener是采用觀察者模式實(shí)現(xiàn)的,我們的啟動(dòng)時(shí)入口是執(zhí)行SpringApplication.run方法

如下兩處代碼,分別是獲取SpringApplicationRunListeners(這個(gè)是各個(gè)事件的發(fā)布者)和進(jìn)行環(huán)境的準(zhǔn)備,

在環(huán)境準(zhǔn)備好后發(fā)布ApplicationEnvironmentPreparedEvent事件

雖然這里listeners是容器類,但默認(rèn)只有一個(gè)EventPublishingRunListener,我們看一下它是怎么發(fā)布事件的,如下代碼很明顯,進(jìn)行了一個(gè)事件的廣播,但還沒看到廣播給誰,繼續(xù)往下

這里可以看到getApplicationListeners(event, type),就是根據(jù)事件類型獲取需要廣播的ApplicationListener

在調(diào)試狀態(tài)下,我們看一下getApplicationListeners(event, type)有哪些

發(fā)現(xiàn)只有6個(gè)ApplicationListener響應(yīng)了ApplicationEnvironmentPreparedEvent事件,而且沒有我們自定義的ApplicationListener,怎么回事呢?

實(shí)際上,我們的ApplicationListener是通過代理類執(zhí)行的,即上面的DelegatingApplicationListener,我們可以看一下它怎么執(zhí)行的:

上面代碼可以看到代理類也監(jiān)聽了所有的事件,然后在ApplicationEnvironmentPreparedEvent事件時(shí)才初次響應(yīng),并且通過getListeners獲取所有代理的ApplicationListeners,然后它自己實(shí)現(xiàn)了一個(gè)事件廣播器,然后把獲取的ApplicationListeners通過到addApplicationListener加入到廣播器中,最后進(jìn)行事件的廣播轉(zhuǎn)發(fā)。我們重點(diǎn)看一下getListeners,看是如何獲取到我們自定義的ApplicationListeners的:

我們可以看到,是通過我們配置的context.listener.classes獲得類名,然后通過反射實(shí)例化返回。

這樣整個(gè)監(jiān)聽器的過程就完整了。我們注意到代理類是從ApplicationEnvironmentPreparedEvent開始響應(yīng)的,所以之前的事件我們自定義的ApplicationListener是無法監(jiān)聽的。實(shí)際上前面只有一個(gè)ApplicationStartingEvent,此時(shí)應(yīng)用才剛啟動(dòng),也沒啥好監(jiān)聽的。如果需要監(jiān)聽所有的事件可以在自己在spring.factories配置:

在resources下新建META-INF\spring.factoies,然后和spring的監(jiān)聽器配置一樣配置自己定義的監(jiān)聽器,就可以啦

http://aloenet.com.cn/news/34376.html

相關(guān)文章:

  • 蘇州園區(qū)做網(wǎng)站公司seoul是啥意思
  • 貴州安順建設(shè)主管部門網(wǎng)站百度seo網(wǎng)站優(yōu)化
  • 網(wǎng)站建設(shè) 瀏覽器兼容1688的網(wǎng)站特色
  • 營銷型網(wǎng)站建設(shè)一般要多少錢產(chǎn)品網(wǎng)絡(luò)營銷策劃方案
  • 做網(wǎng)站寫需求千萬不要做手游推廣員
  • 誠信通開了網(wǎng)站誰給做精準(zhǔn)的搜索引擎優(yōu)化
  • 網(wǎng)站建設(shè)公司該怎么銷售最新收錄查詢
  • 手機(jī)網(wǎng)站如何做新區(qū)快速seo排名
  • 滄州百度愛采購灰色詞seo推廣
  • 企業(yè)網(wǎng)站排名提升軟件能優(yōu)化谷歌排名推廣公司
  • 如何給網(wǎng)站做seo怎么制作網(wǎng)站?
  • 新鄭做網(wǎng)站佛山網(wǎng)站建設(shè)公司
  • 東莞公司注冊代理青島網(wǎng)站seo服務(wù)
  • 政務(wù)服務(wù)網(wǎng)站 建設(shè)方案百度競價(jià)開戶渠道
  • css做網(wǎng)站常用網(wǎng)站seo優(yōu)化服務(wù)
  • 微信小程序注冊需要多少錢南昌seo管理
  • 有贊可以做獨(dú)立網(wǎng)站嗎百度關(guān)鍵詞推廣多少錢
  • 電子商務(wù)書店網(wǎng)站設(shè)計(jì)實(shí)驗(yàn)競價(jià)排名的服務(wù)模式是
  • 通用網(wǎng)址查詢網(wǎng)站網(wǎng)絡(luò)營銷項(xiàng)目
  • 胖哥網(wǎng)站的建設(shè)目標(biāo)網(wǎng)絡(luò)廣告投放渠道有哪些
  • 成都網(wǎng)站制作公司湘潭網(wǎng)站設(shè)計(jì)
  • 3小時(shí)網(wǎng)站建設(shè)平臺seo診斷優(yōu)化方案
  • asp網(wǎng)站開發(fā)環(huán)境同仁seo排名優(yōu)化培訓(xùn)
  • 網(wǎng)站備案現(xiàn)狀網(wǎng)絡(luò)平臺建站
  • 使用wordpress版權(quán)深圳市seo上詞多少錢
  • 對網(wǎng)站備案的認(rèn)識網(wǎng)絡(luò)營銷的主要傳播渠道
  • 網(wǎng)站開發(fā)投入產(chǎn)出分析國際新聞最新消息戰(zhàn)爭
  • 網(wǎng)頁游戲傳奇霸主輔助寧波seo優(yōu)化公司排名
  • 濱州網(wǎng)站建設(shè)公司軍事新聞今日最新消息
  • 谷歌有做網(wǎng)站建設(shè)怎樣做推廣是免費(fèi)的