十、【源码】发布、监听事件

源码地址:https://github.com/spring-projects/spring-framework

仓库地址:https://gitcode.net/qq_42665745/spring/-/tree/10-event-listener

发布、监听事件

核心类:

  • ApplicationEvent:这个类是所有事件的基类,提供事件的基本功能。
  • ApplicationContextEvent:所有与ApplicationContext相关的事件都必须继承自这个类。例如,ContextRefreshedEvent和ContextClosedEvent。
  • ApplicationEventPublisher:提供发布事件的功能。任何Spring容器中的bean都可以通过实现这个接口来发布事件。
  • ApplicationListener:所有的事件监听器都必须实现ApplicationListener接口
  • ApplicationEventMulticaster:定义了事件广播器的基本功能。它负责将事件广播给所有注册的监听器
  • AbstractApplicationEventMulticaster:提供了事件广播的基本功能。它处理监听器的注册和注销,并提供事件广播的基础实现。
  • SimpleApplicationEventMulticaster:提供了一个简单的事件广播机制,可以同步或异步地通知监听器。
  • ContextRefreshedEvent:当ApplicationContext初始化或刷新时发布这个事件。
  • ContextClosedEvent:当ApplicationContext关闭时发布这个事件

流程:

1.初始化:ApplicationContext上下文初始化时,初始化事件广播器,并注册事件监听器
2.使用:

  • 发布事件:通过调用ApplicationContext.publishEvent()方法发布事件
  • 事件广播:ApplicationContext会委托给ApplicationEventMulticaster来广播事件
  • 事件传播:ApplicationEventMulticaster将事件传递给所有注册的监听器,获取到对这个事件感兴趣的监听器的监听器集合
  • 事件处理:监听器集合依次调用ApplicationListener的onApplicationEvent方法处理事件

isAssignableFrom和instanceof比较:

1.isAssignableFrom:比较Class对象,用于判断某个类是否是另一个类的超类或接口
例:大.isAssignableFrom(小),true
2.instanceof:比较实例对象,用于判断一个类是否是另一个类的实例或子类实例
例:小.instanceof(大),true

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值