首页 > 其他 > 详细

listener.starting()源码探究

时间:2019-04-01 22:12:23      阅读:157      评论:0      收藏:0      [点我收藏+]

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

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

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

技术分享图片

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

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

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

技术分享图片

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

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

技术分享图片

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

技术分享图片

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

总结一下:

技术分享图片

 

listener.starting()源码探究

原文:https://www.cnblogs.com/wangxuejian/p/10639133.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!