springboot的事件監(jiān)聽:為bean之間的消息通信提供支持。當(dāng)一個(gè)bean做完一件事以后,通知另一個(gè)bean知曉并做出相應(yīng)處理。這時(shí),我們需要另一個(gè)bean,監(jiān)聽當(dāng)前bean所發(fā)生的事件。
實(shí)現(xiàn)步驟:四個(gè)步驟,四種方式
第一種方式
1、自定義事件,一般是繼承applicationevent抽象類
2、定義事件監(jiān)聽器,一般是實(shí)現(xiàn)applicationlistener接口
3、1)把監(jiān)聽器加入到springapplication中:applicationlistener.addlistener();然后發(fā)布事件
2)或放置到spring容器:@conponent
3)或在application.properties配置文件中配置context.listener.classes=監(jiān)聽器全類名
4)或編寫一個(gè)類,納入spring容器中,編寫一個(gè)帶參的方法,參數(shù)為事件的父類或需要監(jiān)聽的事件,加上@eventlistener
4、發(fā)布事件
第一步:自定義事件,繼承applicationevent抽象類
1
2
3
4
5
|
public class myapplicationevent extends applicationevent { public myapplicationevent(object source) { super (source); } } |
第二步:自定義事件監(jiān)聽器,實(shí)現(xiàn)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() + "被監(jiān)聽......" ); } } |
第三、四步:把監(jiān)聽器加入spring中,然后發(fā)布事件
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); //把監(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
第四種方式:編寫一個(gè)類myeventhandler,替代上文中的myapplicationlistener,將其納入spring容器中,編寫一個(gè)帶參的方法,參數(shù)為事件的父類或需要監(jiān)聽的事件,加上@eventlistener。(參數(shù)的范圍越廣泛,監(jiān)聽到的事件越多)
myeventhandler.class
至此,springboot的四種事件監(jiān)聽方式就介紹完畢啦~,以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。
原文鏈接:http://www.jianshu.com/p/942f10493c47?utm_source=tuicool&utm_medium=referral