淺談Spring-boot事件監(jiān)聽
springboot的事件監(jiān)聽:為bean之間的消息通信提供支持。當一個bean做完一件事以后,通知另一個bean知曉并做出相應(yīng)處理。這時,我們需要另一個bean,監(jiān)聽當前bean所發(fā)生的事件。
實現(xiàn)步驟:四個步驟,四種方式
第一種方式
1、自定義事件,一般是繼承ApplicationEvent抽象類
2、定義事件監(jiān)聽器,一般是實現(xiàn)ApplicationListener接口
3、1)把監(jiān)聽器加入到SpringApplication中:ApplicationListener.addListener();然后發(fā)布事件
2)或放置到spring容器:@Conponent
3)或在application.properties配置文件中配置context.listener.classes=監(jiān)聽器全類名
4)或編寫一個類,納入spring容器中,編寫一個帶參的方法,參數(shù)為事件的父類或需要監(jiān)聽的事件,加上@EventListener
4、發(fā)布事件
第一步:自定義事件,繼承ApplicationEvent抽象類
public class MyApplicationEvent extends ApplicationEvent {
public MyApplicationEvent(Object source) {
super(source);
}
}
第二步:自定義事件監(jiān)聽器,實現(xiàn)ApplicationListener接口
public class MyApplicationListener implements ApplicationListener<MyApplicationEvent> {
@Override
public void onApplicationEvent(MyApplicationEvent myApplicationEvent) {
System.out.println(myApplicationEvent.getClass().getName() + "被監(jiān)聽......");
}
}
第三、四步:把監(jiān)聽器加入spring中,然后發(fā)布事件
@SpringBootApplication
public class BlogApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(BlogApplication.class, args);
//把監(jiān)聽器加入到SpringApplication中
context.addApplicationListener(new MyApplicationListener());
//發(fā)布事件
context.publishEvent(new MyApplicationEvent(new Object()));
context.close();
}
}

第二種方式:換一種方式將監(jiān)聽器加入spring容器中(只需修改BlogApplication)

通過@component注解,將監(jiān)聽器加入spring容器中

BlogApplication.class
第三種方式:在application.properties配置文件中配置context.listener.classes=監(jiān)聽器全類名

spring.properties
第四種方式:編寫一個類MyEventHandler,替代上文中的MyApplicationListener,將其納入spring容器中,編寫一個帶參的方法,參數(shù)為事件的父類或需要監(jiān)聽的事件,加上@EventListener。(參數(shù)的范圍越廣泛,監(jiān)聽到的事件越多)

MyEventHandler.class
至此,springboot的四種事件監(jiān)聽方式就介紹完畢啦~,以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java實現(xiàn)map轉(zhuǎn)換成json的方法詳解
這篇文章主要為大家詳細介紹了Java語言實現(xiàn)map轉(zhuǎn)換成json的幾種方法,文中的示例代碼講解詳細,對我們學習Java有一定幫助,需要的可以參考一下2022-05-05
關(guān)于@ConditionalOnProperty的作用及用法說明
這篇文章主要介紹了關(guān)于@ConditionalOnProperty的作用及用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06

