文章目录
SpringBoot事件监听
1. 事件流程
1.1 定义事件
自定义事件,一般是继承ApplicationEvent抽象类。
public class MyApplicationEvent extends ApplicationEvent {
public MyApplicationEvent(Object source) {
super(source);
}
}
1.2 定义事件监听器
自定义事件监听器,一般是实现ApplicationListener接口。
public class MyApplicationListener implements ApplicationListener<MyApplicationEvent> {
@Override
public void onApplicationEvent(MyApplicationEvent event) {
//业务逻辑...
System.out.println("接收到事件:" + event.getClass());
}
}
1.3 添加监听器
项目启动时,将监听器添加到Spring容器中,代码见1.4节。
1.4 发布事件
项目启动时,使用ApplicationContext.publishEvent发布事件。
@SpringBootApplication
public class EventApp {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(EventApp.class);
//添加监听器
app.addListeners(new MyApplicationListener());
//启动项目
ConfigurableApplicationContext context = app.run(args);
//发布事件
context.publishEvent(new MyApplicationEvent(new Object()));
context.close();
}
}
测试效果如下:
2. 配置监听器
2.1 方式一
通过SpringApplication.addListeners方法添加监听器,如1章节介绍。
2.2 方式二
通过@Component注解将监听器注入到Spring容器中管理。
@Component
public class MyApplicationListener implements ApplicationListener<MyApplicationEvent> {
@Override
public void onApplicationEvent(MyApplicationEvent event) {
//业务逻辑...
System.out.println("接收到事件:" + event.getClass());
}
}
2.3 方式三
通过配置项,在配置文件application.properties中添加配置项context.listener.classes。
context.listener.classes=com.superchen.springboothello.event.MyApplicationListener