listener.starting()源码探究

容器启动时,监听器调用starting方法,本质是找到匹配的监听器,广播事件,开始监听

上节对寻找匹配监听器做了分析,其是这个过程比较重要的部分,本文开始监听,反而不是那么复杂,如下:

找匹配监听器就是从这里开始,找到后,直接遍历,调用invokeListener()方法,注意这个虽然有invoke,但不是反射,只是普通方法而已.

到这里开始调用doInvokeListener()方法,注意前面两个invoke方法都没有做什么实质性的工作,可以认为仅仅只是传递参数,这里才开始动真格的了:

因为这里是用参数1去调用一个把参数2当参数的方法,

就在这里,面向接口编程的思想体现出来了,各个实现调用的是各自的方法实现.不言而喻,它们各自的逻辑是各不相同的,以下展示的源码只是其中一种实现.

而它的实现逻辑如下:是用if-else分支进行选择判断的:

由于当前发布的事件是应用启动事件,所以对应的是第一个分支,

第一个分支的做了什么呢?原来是获取一个日志系统,并且进行了前初始化.

到了日志这一步,我觉得暂时跟启动已经够远了,所以就不往下分析了.

总结一下:

 

转载于:https://www.cnblogs.com/wangxuejian/p/10639133.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值