继续按下F6快捷键让程序继续往下运行,直至运行到下面这行代码处。
    registerListeners - 图1
    按照registerListeners方法上面的注释来说,该方法是来检查监听器并注册它们的。也就是说,该方法会将我们项目里面的监听器(也即咱们自己编写的ApplicationListener)注册进来。
    我们可以按下F5快捷键进入到以上registerListeners方法里面去看一看,如下图所示。
    registerListeners - 图2
    可以看到一开始会有一个for循环,该for循环是来遍历从容器中获取到的所有的ApplicationListener的,然后将遍历出的每一个监听器添加到事件派发器中。
    当我们按下F6快捷键让程序继续往下运行时,发现并没有进入for循环中,而是来到了下面这行代码处。
    registerListeners - 图3
    然后,将获取到的每一个监听器添加到事件派发器中。
    当早期我们容器中有一些事件时,会将这些事件保存在名为earlyApplicationEvents的Set集合中。这时,会先获取到事件派发器,再利用事件派发器将这些事件派发出去。也就是说,派发之前步骤产生的事件。
    而现在呢,容器中默认还没有什么事件,所以,程序压根就不会进入到下面的for循环中去派发事件。当程序运行至下面这行代码处时,registerListeners方法就执行完了,它所做的事情很简单,无非就是从容器中拿到所有的ApplicationListener组件,然后将每一个监听器添加到事件派发器中。
    registerListeners - 图4
    以上finishBeanFactoryInitialization方法是非常非常重要的,顾名思义,它是来初始化所有剩下的单实例bean的。执行完该方法之后,就完成BeanFactory的初始化了。我们下一讲来着重分析一下它,敬请期待哟~~~