缘起: 继注册了发布事件的bd后 spring加载流程refresh之initApplicationEventMulticaster(),继续注册监听器
registerListeners
/**
* 注册监听器
*/
registerListeners();
在发布事件的时候会从这里注册的监听器中去获取
protected void registerListeners() {
/**
* getApplicationListeners就是获取applicationListeners
* 是通过applicationListeners(listener)添加的
* 放入applicationListeners中
*/
for (ApplicationListener<?> listener : getApplicationListeners()) {
getApplicationEventMulticaster().addApplicationListener(listener);
}
/**
* 从容器中获取所有实现了ApplicationListener接口的bd的bdName
* 放入applicationListenerBeans
*
*/
String[] listenerBeanNames = getBeanNamesForType(ApplicationListener.class, true, false);
for (String listenerBeanName : listenerBeanNames) {
getApplicationEventMulticaster().addApplicationListe