spring中的监听器

学校小故事

为了了解spring流程,需要接受、了解、熟悉很多未知的定义,在此使用 学校 作为辅助,帮助我们了解spring。
<此版本中 新增BeanFactoryPostProcessor>

学校spring
学校管理局spring开发人员
学校信息ApplicationContext
学校人员信息库DefaultListableBeanFactory
学校广播器BeanFactory中的applicationEventMulticaster属性
学校广播器通知人全信息列表BeanFactory中的defaultRetriever对象的applicationListeners属性
学校广播器通知人名列表BeanFactory中的defaultRetriever对象的applicationListenerBeans属性
人员bean
人员信息BeanDefinition

观察者模式

观察者模式链接: 观察者模式

spring中监听器角色

事件

对应 观察者模式 中的被观察者执行方法。

监听器

对应 观察者模式 中的观察者。
根据监听事件执行不同工作。

多播器

对应 观察者模式 中的观察者管理器。
管理监听器、执行 管理的监听器 监听事件方法。

事件源

发布事件的源对象。

spring实例

1、spring中创建多播器

十三太保之八<initApplicationEventMulticaster方法>

initApplicationEventMulticaster方法中
// 创建默认的多播器
758行:this.applicationEventMulticaster = new SimpleApplicationEventMulticaster(beanFactory);

2、spring多播器中添加监听器

十三太保之十<registerListeners方法>

registerListeners方法中
// 在 多播器中注册监听器
818行:getApplicationEventMulticaster().addApplicationListenerBean(listenerBeanName);

3、spring事件发布

以 ContextRefreshedEvent<spring启动后发布事件为例>
十三太保之十二<finishRefresh方法>中执行

// 发布 ContextRefreshedEvent 事件
882行:publishEvent(new ContextRefreshedEvent(this));
publishEvent方法中
// 发布 applicationContext 发布事件后,通知 多播器。
398行:getApplicationEventMulticaster().multicastEvent(applicationEvent, eventType);
// 多播器通知监听器 选择性 异步/同步 执行对应事件
136/139行:invokeListener(listener, event); 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值