注:图片来源于网络
SpringBoot作为业内公认的优秀开源框架,它的监听器是如何实现呢?在这里首先对一些基础组件进行分析;
1、事件ApplicationEvent
ApplicationEvent是一个抽象类,idea上展开其继承关系如图:
可见SpringBoot所定义的事件类型是极为丰富的。
2、监听器ApplicationListener
ApplicationListener是一个接口,我们也可以通过实现这个接口来定义自己的监听器,可以通过与事件初始化器方式相似的方式进行加载。
@FunctionalInterface
public interface ApplicationListener<E extends ApplicationEvent> extends EventListener {
void onApplicationEvent(E event);
}
我们可以看到代码中它接受一个上文中提到的事件泛型,这代表了此监听器关注的事件;
还有一种实现监听器的方式,即实现SmartApplicationListener接口,SmartApplicationListener继承了ApplicationListener接口,通过这种方式实现监听器,可以同时注册多个感兴趣的事件,只需实现接口的supportsEventType方法即可;
public interface SmartApplicationListener extends ApplicationListener<ApplicationEvent>, Ordered {
boolean supportsEventType(Class<? extends ApplicationEvent> eventType);
default boolean supportsSourceType(@Nullable Class<?> sourceType) {
return true;
}
@Override
default int getOrder() {
return LOWEST_PRECEDENCE;
}
}
3、事件广播器ApplicationEventMulticaster
ApplicationEventMulticaster是一个接口,定义了添加监听器、删除监听器、传播事件等方法;
SpringBoot为我们实现了SimpleApplicationEventMulticaster这一事件广播器,继承关系如图所示:
SpringBoot如何传播事件,有时间在下一篇博文进行整理,本文有哪些不对之处,也感谢大家的指正。
到此这篇关于SpringBoot深入分析讲解监听器模式上的文章就介绍到这了,更多相关SpringBoot监听器模式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!