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)]

  • 如果文章有帮助到你欢迎关注微信公众号《后端学长》 在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值