一、介绍
1、简介
springboot还提供了一个 @EventListener 注解来实现注解式监听。
这是监听器的简化写法,不需要再继承ApplicationListener。
2、指定事件
(1)可以在注解中指定
@EventListener(MyEvent.class)
@EventListener({MyEvent.class, ContextRefreshedEvent.class})
(2)也可以直接在入参中声明
@EventListener
public void contextRefreshedEventListener(ContextRefreshedEvent event){}
@EventListener
public void myEventListener(MyLogEvent event) {}
二、原理
三、使用
如前面的多个事件监听,使用@EventListener 注解可以有两种写法:
@Slf4j
@Component
public class MyTask {
@EventListener
public void onApplicationEvent(ApplicationEvent event) {
if (event instanceof ContextRefreshedEvent) {
log.info("监听到 ContextRefreshedEvent...");
}
if (event instanceof MyEvent) {
log.info("监听到 MyEvent...");
MyEvent myEvent = (MyEvent) event;
System.out.println("时间:" + myEvent.getTime() + " 信息:" + myEvent.getMsg());
}
}
}
@Slf4j
@Component
public class MyTask {
@EventListener
public void myEventListener(MyEvent event) {
log.info("监听到 MyEvent...");
MyEvent myEvent = (MyEvent) event;
System.out.println("时间:" + myEvent.getTime() + " 信息:" + myEvent.getMsg());
}
@EventListener
public void contextRefreshedEventListener(ContextRefreshedEvent event) {
log.info("监听到 ContextRefreshedEvent...");
}
}
四、demo
下面监听内置事件、自定义事件和自定义批量事