淺談Spring-boot事件監(jiān)聽
springboot的事件監(jiān)聽:為bean之間的消息通信提供支持。當一個bean做完一件事以后,通知另一個bean知曉并做出相應處理。這時,我們需要另一個bean,監(jiān)聽當前bean所發(fā)生的事件。
實現步驟:四個步驟,四種方式
第一種方式
1、自定義事件,一般是繼承ApplicationEvent抽象類
2、定義事件監(jiān)聽器,一般是實現ApplicationListener接口
3、1)把監(jiān)聽器加入到SpringApplication中:ApplicationListener.addListener();然后發(fā)布事件
2)或放置到spring容器:@Conponent
3)或在application.properties配置文件中配置context.listener.classes=監(jiān)聽器全類名
4)或編寫一個類,納入spring容器中,編寫一個帶參的方法,參數為事件的父類或需要監(jiān)聽的事件,加上@EventListener
4、發(fā)布事件
第一步:自定義事件,繼承ApplicationEvent抽象類
public class MyApplicationEvent extends ApplicationEvent { public MyApplicationEvent(Object source) { super(source); } }
第二步:自定義事件監(jiā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容器中,編寫一個帶參的方法,參數為事件的父類或需要監(jiān)聽的事件,加上@EventListener。(參數的范圍越廣泛,監(jiān)聽到的事件越多)
MyEventHandler.class
至此,springboot的四種事件監(jiān)聽方式就介紹完畢啦~,以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
關于@ConditionalOnProperty的作用及用法說明
這篇文章主要介紹了關于@ConditionalOnProperty的作用及用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06