SpringBoot源码分析 - 监听器的实现

监听器模式

我们要先了解监听器的设计模式的要素:
1. 事件
2. 监听器
3. 广播器
4. 触发机制

  • 图解:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-haN1ynZy-1583037065628)(https://i.loli.net/2020/02/23/KIZc6LdkmNvSRYl.jpg)]

SpringBoot 系统监听器的实现

系统监听器 - ApplicationListener

  • 其主要作用是监听事件
  • 源码如下所示
@FunctionalInterface
public interface ApplicationListener<E extends ApplicationEvent> extends EventListener {
	/**
	 * Handle an application event.
	 * @param event the event to respond to
	 */
	void onApplicationEvent(E event);
}
  • 源码解读:
    • 01 首先是一个函数式接口,只有一个抽象方法 onApplicationEvent
    • 02 EventListener为空实现,只是声明其子类都是事件监听器
    • 03 ApplicationListener 泛型定义其监听的事件是ApplicationEven的子类。

广播器 - ApplicationEventMulticaster

  • 其主要作用是管理监听器和广播事件
  • 其源码主要有三种接口 添加/删除/监听器和广播事件

系统事件

  • 有很多事件,其中的关系如下图所示:
    事件类型类图.jpg

SpringBoot启动的时候事件发生顺序

  • 框架启动的时候事件发布顺序如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sBPQXTsv-1583037065630)(https://i.loli.net/2020/02/23/LWZp2fyxCN9hQI3.jpg)]

监听器的注册

监听器的触发机制

  • 流程如下图所示:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HLWYAURl-1583037065631)(https://i.loli.net/2020/02/24/WYSofx3yPli8zcV.jpg)]

  • 简单的流程图
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GidxhPKt-1583037065632)(https://i.loli.net/2020/03/01/IlZuzbvm9itMOG3.jpg)]

发布了59 篇原创文章 · 获赞 30 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_33249725/article/details/104590107
今日推荐