激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Spring Boot應(yīng)用事件監(jiān)聽示例詳解

Spring Boot應(yīng)用事件監(jiān)聽示例詳解

2021-06-19 10:24wiselyman Java教程

這篇文章主要給大家介紹了關(guān)于Spring Boot應(yīng)用事件監(jiān)聽的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

本文主要給大家介紹了關(guān)于spring boot應(yīng)用事件監(jiān)聽的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面話不多說了,來(lái)一起看看詳細(xì)的介紹吧

1. spring boot特有的應(yīng)用事件

除了spring框架的事件,spring boot的springapplication也發(fā)送了一些自己的事件:

  • applicationstartingevent:在任何處理(除了注冊(cè)listener和initializer)開始之前發(fā)送。
  • applicationenvironmentpreparedevent: 在context創(chuàng)建之前,而用到context中的environment已經(jīng)被識(shí)別時(shí)發(fā)送。
  • applicationcontextinitializedevent: springapplication正在啟動(dòng),applicationcontext已準(zhǔn)備好且applicationcontextinitializer已被調(diào)用但是bean的定義還沒有被加載時(shí)發(fā)送。
  • applicationpreparedevent: 在context刷新之前,在bean的定義已經(jīng)被加載之后調(diào)用。
  • applicationstartedevent: 在任何應(yīng)用和command-line runner調(diào)用之前,而context已經(jīng)被刷新時(shí)發(fā)送。
  • applicationreadyevent: 在任何應(yīng)用和command-line runner被調(diào)用的時(shí)候發(fā)送,它意味著應(yīng)用可以接受請(qǐng)求了。
  • applicationfailedevent: 在啟動(dòng)時(shí)有異常的時(shí)候發(fā)送。

有些事件是在applicationcontext創(chuàng)建之前觸發(fā)的,所以我們不能用常規(guī)的注冊(cè)成bean的事件監(jiān)聽方式:

  • 注解了@eventlistener注解分方法的類注冊(cè)的bean;
  • 實(shí)現(xiàn)了applicationlistener<event>接口的類注冊(cè)的bean。

像applicationstartedevent和applicationreadyevent是applicationcontext創(chuàng)建之后觸發(fā)的,可以用上述兩種方式來(lái)監(jiān)聽事件。

2. 如何監(jiān)聽這些事件

我們可以通過下面的方式注冊(cè)監(jiān)聽:

2.1. springapplication.addlisteners(...)

?
1
2
3
4
5
6
7
8
9
10
springapplication application = new springapplication(starteventsapplication.class);
application.addlisteners(
  (applicationlistener<applicationstartingevent>) event -> log.info("----------- 監(jiān)聽spring boot:" + event.getclass().getsimplename()),
  (applicationlistener<applicationenvironmentpreparedevent>) event -> log.info("----------- 監(jiān)聽spring boot:" + event.getclass().getsimplename()),
  (applicationlistener<applicationcontextinitializedevent>) event -> log.info("----------- 監(jiān)聽spring boot:" + event.getclass().getsimplename()),
  (applicationlistener<applicationpreparedevent>) event -> log.info("----------- 監(jiān)聽spring boot:" + event.getclass().getsimplename()),
  (applicationlistener<applicationstartedevent>) event -> log.info("----------- 監(jiān)聽spring boot:" + event.getclass().getsimplename()),
  (applicationlistener<applicationreadyevent>) event -> log.info("----------- 監(jiān)聽spring boot:" + event.getclass().getsimplename())
);
application.run(args);

2.2. springapplicationbuilder.listeners(...)

?
1
2
3
4
5
6
7
8
9
10
11
new springapplicationbuilder()
   .sources(starteventsapplication.class)
   .listeners(
     (applicationlistener<applicationstartingevent>) event -> log.info("----------- 監(jiān)聽spring boot:" + event.getclass().getsimplename()),
     (applicationlistener<applicationenvironmentpreparedevent>) event -> log.info("----------- 監(jiān)聽spring boot:" + event.getclass().getsimplename()),
     (applicationlistener<applicationcontextinitializedevent>) event -> log.info("----------- 監(jiān)聽spring boot:" + event.getclass().getsimplename()),
     (applicationlistener<applicationpreparedevent>) event -> log.info("----------- 監(jiān)聽spring boot:" + event.getclass().getsimplename()),
     (applicationlistener<applicationstartedevent>) event -> log.info("----------- 監(jiān)聽spring boot:" + event.getclass().getsimplename()),
     (applicationlistener<applicationreadyevent>) event -> log.info("----------- 監(jiān)聽spring boot:" + event.getclass().getsimplename())
     )
   .run(args);

2.3. meta-inf/spring.factories

src/main/resources/meta-inf/spring.factories:

?
1
2
3
4
5
6
org.springframework.context.applicationlistener=top.wisely.startevents.listeners.applicationcontextinitializedeventlistener, \
            top.wisely.startevents.listeners.applicationenvironmentpreparedeventlistener, \
            top.wisely.startevents.listeners.applicationpreparedeventlistener, \
            top.wisely.startevents.listeners.applicationreadyeventlistener, \
            top.wisely.startevents.listeners.applicationstartedeventlistener, \
            top.wisely.startevents.listeners.applicationstartingeventlistener

監(jiān)聽器只需實(shí)現(xiàn)applicationlistener<要監(jiān)聽的接口類型>接口,無(wú)需手動(dòng)注冊(cè)為bean:

?
1
2
3
4
5
6
public class applicationstartedeventlistener implements applicationlistener<applicationstartedevent> {
 @override
 public void onapplicationevent(applicationstartedevent event) {
  log.info("----------- 監(jiān)聽spring boot:" + event.getclass().getsimplename());
 }
}

3. 源碼地址

https://github.com/wiselyman/spring-boot-application-events.git

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)服務(wù)器之家的支持。

原文鏈接:http://www.wisely.top/2018/12/04/spring-boot-application-events/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 热99精品视频 | 免费啪视频在线观看 | 羞羞网站在线看 | 国产精品99久久久久久久女警 | 天天透天天狠天天爱综合97 | 欧美精品毛片 | 国产真实孩交 | 亚洲第一成网站 | 免费一级毛片免费播放 | 成人黄色小视频网站 | 激情亚洲网 | 国产妇女乱码一区二区三区 | 国产精品亚洲欧美一级在线 | 日韩精品网站在线观看 | 久久免费视频在线 | 91精品国产网站 | 日韩黄色三级视频 | 91看片淫黄大片欧美看国产片 | 毛片免费大全短视频 | 天堂成人国产精品一区 | www.guochanav.com | 免费黄色一级网站 | 91精品国产乱码久 | 亚洲综合视频网站 | 国产精品久久久久久久久久久久久久久久 | 91精品国产91久久久 | 欧美一级特黄特色大片免费 | 欧美一级片一区 | 日韩精品羞羞答答 | 久久色伦理资源站 | 在线播放黄色片 | 久久久久久久久久91 | 日本一区二区三区高清不卡 | 成人男女啪啪免费观看网站四虎 | 日本中文字幕网址 | 久久在草 | 一级黄色性感片 | 国产一极毛片 | 91综合在线观看 | 午夜生活理论片 | 亚洲第五色综合网 |