spring中EventListener的使用方式
spring自帶EventListener使用
首先了解下事件監(jiān)聽的基本原理,這里使用到的是設(shè)計(jì)模式中的“’'觀察者模式"”模式。
監(jiān)聽 監(jiān)聽 監(jiān)聽 事件發(fā)布者 監(jiān)聽者A 監(jiān)聽者B 監(jiān)聽者C 監(jiān)聽到后處理自己的邏輯 監(jiān)聽到后處理自己的邏輯 監(jiān)聽到后處理自己的邏輯
整個(gè)的監(jiān)聽過程是通過一個(gè)事件觸發(fā)機(jī)制來實(shí)現(xiàn),首先由事件發(fā)布者發(fā)布事件消息,對應(yīng)的監(jiān)聽者接收到消息后就處理自己的業(yè)務(wù)邏輯。
舉例說明
A是BCD三人的隊(duì)長,今天他們4人要去執(zhí)行一項(xiàng)任務(wù)。
在開始之前隊(duì)長已經(jīng)分別將各個(gè)人任務(wù)分配下去,行動的時(shí)候只要隊(duì)長A向各個(gè)隊(duì)員發(fā)送統(tǒng)一的行動指令“行動”,當(dāng)BCD接收到A的指令“行動”之后就馬上去處理各自的任務(wù)。
這里的A就做為事件發(fā)布者,BCD三人監(jiān)聽A發(fā)送的指令做出相應(yīng)的行動,整體的原理相對來說較為簡單。
示例代碼
創(chuàng)建事件發(fā)布實(shí)體對象
public class PushEvent extends ApplicationEvent { private String msg; public PushEvent(Object source, String msg) { super(source); this.msg = msg; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } }
創(chuàng)建監(jiān)聽者1
@Slf4j @Service public class EventListenerDemo { @EventListener public void eventListener(PushEvent event) { log.info(this.getClass().getSimpleName() + "監(jiān)聽到數(shù)據(jù):" + event.getMsg()); } }
創(chuàng)建第二個(gè)監(jiān)聽者
@Slf4j @Service public class EventListenerDemo1 { @EventListener public void eventListener(PushEvent event){ log.info(this.getClass().getSimpleName()+"監(jiān)聽到數(shù)據(jù):"+event.getMsg()); } }
測試
@Slf4j @SpringBootTest class DemoApplicationTests { @Autowired private ApplicationContext applicationContext; @Test public void publish() { String msg = "測試數(shù)據(jù)"; log.info("發(fā)布信息:" + msg); ApplicationEvent event = new PushEvent(this, msg); applicationContext.publishEvent(event); } }
運(yùn)行結(jié)果
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot application.yml和bootstrap.yml的區(qū)別
本文主要介紹了SpringBoot application.yml和bootstrap.yml的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04Java程序中添加播放MIDI音樂功能的實(shí)現(xiàn)方法詳解
本篇文章是對在Java程序中添加播放MIDI音樂功能的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05java項(xiàng)目實(shí)現(xiàn)圖片等比縮放
這篇文章主要為大家詳細(xì)介紹了java項(xiàng)目實(shí)現(xiàn)圖片等比縮放,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04