- 原文链接 https://www.zhoutao123.com/page/book/springboot/category/dmsce7
- 更多技术文章 & 读书笔记 欢迎访问 燕归来兮 https://www.zhoutao123.com
SpringBoot 提供了各种各样的时间监听器( _ApplicationListener 的子类 _),用来订阅SpringBoot在运行阶段的各种事件,整体的这种方式实现的逻辑图如下图:
这个接口是应用的事件的监听器,基于观察者模式实现,从Spring3.0开始,当监听器在Spring上下文注册后, 在Spring的某些阶段出现发出事件的时候,将会执行指定的方法。
@FunctionalInterface
public interface ApplicationListener<E extends ApplicationEvent> extends EventListener {
/** 处理一个应用事件*/
void onApplicationEvent(E event);
}
这里的消息指的是 ApplicationEvent
, Spring 提供了ApplicationEvent 类,并内置一些Spring的应用事件,如果需要定义自定义的事件,则需要通过继承 ApplicationEvent
实现。
SpringBoot 内置的SpringApplicationEvent如下图所示。
SpringBoot 的事件发送时具有一定顺序,会按照SpringBoot的启动顺序发送:
通过继承ApplicationListener<E>
可以实现自定义的事件处理器,下面的代码中展示了监听ApplicationEvent事件的功能
/**
* 自定义的事件监听器,监听事件为 ApplicationEvent
*/
@Slf4j
@Component
public class CustomerApplicationListener implements ApplicationListener<ApplicationEvent> {
@Override
public void onApplicationEvent(ApplicationEvent e) {
log.info("接收到 Spring事件 => {}", e.getClass().getSimpleName());
}
}
// 启动应用后&