中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > 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)聽(tīng)器。監(jiān)聽(tīng)的事件有&#xff08;包括但不限于&#xff09;&#xff1a; &#xff08;1&#xff09;接下來(lái)&#xff0c;我們先通過(guò)一個(gè)例子實(shí)現(xiàn)自定義ApplicationListener&#xff1a; 監(jiān)聽(tīng)器需要實(shí)現(xiàn)ApplicationListener<…

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

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

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

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

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

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

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是容器類(lèi),但默認(rèn)只有一個(gè)EventPublishingRunListener,我們看一下它是怎么發(fā)布事件的,如下代碼很明顯,進(jìn)行了一個(gè)事件的廣播,但還沒(méi)看到廣播給誰(shuí),繼續(xù)往下

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

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

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

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

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

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

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

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

http://www.risenshineclean.com/news/34376.html

相關(guān)文章:

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