前言:
上一篇我们分析了 Spring Boot 事件监听的原理,本篇我们来自定义实现自己的监听器。
Spring Boot 系列文章传送门
Spring Boot 自定义监听器
创建 Spring Boot 自定义监听器通常要经过一下步骤
- 定义事件。
- 定义事件监听器。
- 定义事件发布器。
- 触发事件,完成验证。
定义事件
定义 Event 事件,MyEvent 继承了 ApplicationEvent 类,如果我们要使用 Spring 的事件监听机制,那我们定义的 Event 事件必须继承ApplicationEvent ,否则就无法使用。
public class MyEvent extends ApplicationEvent {
private final String event;
public MyEvent(Object source, String event) {
super(source);
this.event = event;
}
public String getEvent() {
return event;
}
}
定义事件监听器
事件监听器实现了 ApplicationLister 接口,泛型为 ApplicationEvent,因为要监听事件,所以必须按照 Spring 的规则来,onApplicationEvent 方法就是监听到的事件,在这里可以完成业务逻辑处理,因为事件监听器需要加入Spring IOC 容器中才能生效,因此 MyListener 使用了 @Component 注解。
@Slf4j
@Component
public class MyListener implements ApplicationListener<MyEvent> {
@Override
public void onApplicationEvent(MyEvent myEvent) {
//监听器调用事件方法
String event = myEvent.getEvent();
log.info("event:{}",event);
}
}
定义事件发布器
Sprin Boot 监听器要生效,必须要有一个时间发布器,自定了一个事件发布器,注入了 ApplicationEventPublisher,使用 ApplicationEventPublisher#publishEvent 方法完成事件发布。
@Component
public class MyPublisher {
@Resource
private ApplicationEventPublisher applicationEventPublisher;
public void publish(){
applicationEventPublisher.publishEvent(new MyEvent(new MyListener(),"publish event test"));
}
}
触发事件,完成验证
我们这里直接使用 Spring Boot 启动类来完成事件发布测试,如下:
@SpringBootApplication
public class MyStudySpringBootApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(MyStudySpringBootApplication.class, args);
MyPublisher publisher = context.getBean(MyPublisher.class);
publisher.publish();
}
}
测试结果:
2024-06-30 21:35:42.926 INFO 29928 --- [main] com.my.study.start.listener.MyListener : event:publish event test
结果符合预期,这样我们就完成了一个简单的自定义事件监听,一般来说,我们在项目开发中是使用不到事件监听机制的,但是源码中大量使用了监听机制,因为我们还是需要了解监听器是怎样实现的。
自定义监听器的注解实现方式
使用 @EventListener 注解,代码如下:
@Slf4j
@Component
public class MyAnnotationListener {
@EventListener
public void handleCustomEvent(MyEvent myEvent) {
//监听器调用事件方法
String event = myEvent.getEvent();
log.info("event2:{}", event);
}
}
欢迎提出建议及对错误的地方指出纠正。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » Spring Boot 事件监听机制实战【自定义 Spring Boot 事件监听】
发表评论 取消回复