spring中EventListener的使用方式
spring自帶EventListener使用
首先了解下事件監(jiān)聽的基本原理,這里使用到的是設計模式中的“’'觀察者模式"”模式。
監(jiān)聽 監(jiān)聽 監(jiān)聽 事件發(fā)布者 監(jiān)聽者A 監(jiān)聽者B 監(jiān)聽者C 監(jiān)聽到后處理自己的邏輯 監(jiān)聽到后處理自己的邏輯 監(jiān)聽到后處理自己的邏輯
整個的監(jiān)聽過程是通過一個事件觸發(fā)機制來實現(xiàn),首先由事件發(fā)布者發(fā)布事件消息,對應的監(jiān)聽者接收到消息后就處理自己的業(yè)務邏輯。
舉例說明
A是BCD三人的隊長,今天他們4人要去執(zhí)行一項任務。
在開始之前隊長已經(jīng)分別將各個人任務分配下去,行動的時候只要隊長A向各個隊員發(fā)送統(tǒng)一的行動指令“行動”,當BCD接收到A的指令“行動”之后就馬上去處理各自的任務。
這里的A就做為事件發(fā)布者,BCD三人監(jiān)聽A發(fā)送的指令做出相應的行動,整體的原理相對來說較為簡單。
示例代碼
創(chuàng)建事件發(fā)布實體對象
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)建第二個監(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); } }
運行結(jié)果
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot application.yml和bootstrap.yml的區(qū)別
本文主要介紹了SpringBoot application.yml和bootstrap.yml的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-04-04Java程序中添加播放MIDI音樂功能的實現(xiàn)方法詳解
本篇文章是對在Java程序中添加播放MIDI音樂功能的方法進行了詳細的分析介紹,需要的朋友參考下2013-05-05