Spring中的监听器,高阶开发工作者应该都耳熟能详。在 Spring 框架中,这个接口允许开发者注册监听器来监听应用程序中发布的事件。Spring的事件处理机制提供了一种观察者模式的实现,允许应用程序组件之间进行松耦合的通信。
更详细的介绍和使用说明可以参看如下相关文章:
ApplicationListener 注册监听器来监听应用程序中发布的事件_applicationlistener发布事件-CSDN博客
Spring监听器用法与原理详解(带ApplicationListener模型图)-CSDN博客
一.什么是ApplicationListener接口?
它是Spring框架中的一个接口,这个接口定义了一个处理应用程序事件的方法。当一个事件被发布时,所有注册了对应事件的ApplicationListener都会被通知,并调用其onApplicationEvent()方法来处理改事件。
这个接口通常用于实现自定义的事件监听器,以便在特定事件发生时执行相应的操作。例如,你可以创建一个监听器来监听 ContextRefreshedEvent,当 Spring 应用上下文刷新完成时执行一些初始化操作。
二.如何使用ApplicationListener接口?
1.方法一:实现ApplicationListener接口
注意:
- 实现接口后需要重写onApplicationEvent方法
- 该方法在应用程序上下文被刷新时触发
- 需要将新增的监听器实例加入spring管理,以便在适当的时候触发监听
/**
* Spring监听器应用实例
*/
@Component
public class TestApplicationListener implements ApplicationListener<ContextRefreshedEvent> {
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
//可以写初始化相关或者跨组件通信等业务操作逻辑
System.out.println("Spring监听器应用实例执行成功");
}
}
2.方法二:使用@EventListener注解
注意:
- 在需要监听某个方法上,加上@EventListener(ContextRefreshedEvent.class)注解后,Spring会在加载当前类时,为其创建一个监听器,这个监听器监听的事件类型ContextRefreshedEvent,当此事件发生时,将触发对应的方法。
- 同样也需要将其加入spring容器管理,以便在适当的时候触发监听
@Component
public class MyEventListener {
@EventListener(ContextRefreshedEvent.class)
public void methodEvent(ContextRefreshedEvent event){
System.out.println("methodEvent执行完成");
}
}
三.案例测试