Springboot事件监听机制——事件发布(二)

本文深入探讨了SpringBoot中的事件监听机制,从SpringApplication.run()开始,详细解析了初始化过程,包括事件发布、监听器注册和事件广播的实现。通过分析源码,展示了从ApplicationStartedEvent到ApplicationReadyEvent的各种事件触发及监听器执行流程。
摘要由CSDN通过智能技术生成

Spring中的事件监听
前面我们大致了解了一下事件监听,我们接着来看看Spring中的事件监听是如何使用的。这里我选用了springboot 1.5.7的源码来学习。

在启动类中执行SpringApplication.run()后,首先会执行SpringApplication类的initialize(Object[] sources)方法,然后初始化initializers和listeners两个集合,initializers集合存放的是springboot从配置文件自动装配的6个ApplicationContextInitializer对应的类,listeners集合存放的是从配置文件自动装配的10个ApplicationListener对应的类。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个加载方式是通过读取配置文件中类的路径,然后利用反射生成的对象。具体方法如下:
在这里插入图片描述

接下来,我们看run(String… args)方法中的执行内容:
在这里插入图片描述
首先会通过getRunListeners(String[] args)方法去从配置文件读取key=SpringApplicationRunListener对应的类名然后通过反射生成对象,这里就一个EventPublishingRunListener对象。

接着执行listeners.starting();方法。这里会调用EventPublishingRunListener的starting()方法,查看源码,我们看到这里是调用一个广播器发送广播的方法
在这里插入图片描述
继续跟踪,执行到了SimpleApplicationEventMulticaster类中,通过名字我们可以知道这是一个广播器,用于专门发送事件的。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值