springboot的事件監聽:為bean之間的消息通信提供支持。當一個bean做完一件事以后,通知另一個bean知曉并做出相應處理。這時,我們需要另一個bean,監聽當前bean所發生的事件。
實現步驟:四個步驟,四種方式
第一種方式
1、自定義事件,一般是繼承applicationevent抽象類
2、定義事件監聽器,一般是實現applicationlistener接口
3、1)把監聽器加入到springapplication中:applicationlistener.addlistener();然后發布事件
2)或放置到spring容器:@conponent
3)或在application.properties配置文件中配置context.listener.classes=監聽器全類名
4)或編寫一個類,納入spring容器中,編寫一個帶參的方法,參數為事件的父類或需要監聽的事件,加上@eventlistener
4、發布事件
第一步:自定義事件,繼承applicationevent抽象類
1
2
3
4
5
|
public class myapplicationevent extends applicationevent { public myapplicationevent(object source) { super (source); } } |
第二步:自定義事件監聽器,實現applicationlistener接口
1
2
3
4
5
6
|
public class myapplicationlistener implements applicationlistener<myapplicationevent> { @override public void onapplicationevent(myapplicationevent myapplicationevent) { system.out.println(myapplicationevent.getclass().getname() + "被監聽......" ); } } |
第三、四步:把監聽器加入spring中,然后發布事件
1
2
3
4
5
6
7
8
9
10
11
|
@springbootapplication public class blogapplication { public static void main(string[] args) { configurableapplicationcontext context = springapplication.run(blogapplication. class , args); //把監聽器加入到springapplication中 context.addapplicationlistener( new myapplicationlistener()); //發布事件 context.publishevent( new myapplicationevent( new object())); context.close(); } } |
第二種方式:換一種方式將監聽器加入spring容器中(只需修改blogapplication)
通過@component注解,將監聽器加入spring容器中
blogapplication.class
第三種方式:在application.properties配置文件中配置context.listener.classes=監聽器全類名
spring.properties
第四種方式:編寫一個類myeventhandler,替代上文中的myapplicationlistener,將其納入spring容器中,編寫一個帶參的方法,參數為事件的父類或需要監聽的事件,加上@eventlistener。(參數的范圍越廣泛,監聽到的事件越多)
myeventhandler.class
至此,springboot的四種事件監聽方式就介紹完畢啦~,以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://www.jianshu.com/p/942f10493c47?utm_source=tuicool&utm_medium=referral