Springboot-Listener(springboot的事件监听的4种实现方式)
程序员文章站
2022-05-06 10:26:10
springboot事件监听的4种方式 第1种: 1.自定义事件MyApplicationEvent继承ApplicationEvent 2.定义一个事件监听器MyApplicationListener实现ApplicationListener接口 3.测试运行 第2种: 在第1种的基础上直接在My ......
springboot事件监听的4种方式
第1种:
1.自定义事件myapplicationevent继承applicationevent
import org.springframework.context.applicationevent;
/**
* created by administrator on 2018\11\13 0013.
* 自定义事件继承applicationevent
*/
public class myapplicationevent extends applicationevent {
public myapplicationevent(object source) {
super(source);
}
}
2.定义一个事件监听器myapplicationlistener实现applicationlistener接口
public class myapplicationlistener implements applicationlistener<myapplicationevent>{
@override
public void onapplicationevent(myapplicationevent event) {
system.out.println("接收到事件:"+event.getclass());
}
}
3.测试运行
@springbootapplication
public class applicationdemo {
public static void main(string[] args) {
//创建一个可执行的spring应用程序
springapplication application = new springapplication(applicationdemo.class);
//配置事件监听器
application.addlisteners(new myapplicationlistener());
//配置应用程序上下文
configurableapplicationcontext context =application.run(args);
//发布事件
context.publishevent(new myapplicationevent(new object()));
//关闭监视器
context.close();
}
}
第2种:
在第1种的基础上直接在myapplicationlistener类上加上@component注解,纳入spring容器管理
@springbootapplication
public class applicationdemo {
public static void main(string[] args) {
//创建一个可执行的spring应用程序
springapplication application = new springapplication(applicationdemo.class);
//配置事件监听器
//application.addlisteners(new myapplicationlistener());
//配置应用程序上下文
configurableapplicationcontext context =application.run(args);
//发布事件
context.publishevent(new myapplicationevent(new object()));
//关闭监视器
context.close();
}
}
第3种:
在application.properties配置文件中配置context.listener.classes=您的包路径.myapplicationlistener
delegatingapplicationlistener 委派监听器 对配置文件进行解析,得到监听器集合,注入spring容器
第4种:
使用@eventlistener注解
@component
public class myeventhandle {
/**
* 参数任意(为object)的时候所有事件都会监听到
* 所有,该参数事件,或者其子事件(子类)都可以接收到
*/
@eventlistener
public void event(object event){
system.out.println("myeventhandle 接收到事件:" + event.getclass());
}
}