请问监听器是何时添加到 DefaultListableFactory的applicationListeners属性里面的?
来源:7-6 手撕Spring容器的刷新逻辑(下)
![](http://img1.sycdn.imooc.com/user/5eff2e1700015f6312590904-100-100.jpg)
Panda_io
2021-02-04
请问老师,getApplicationListeners()返回了监听器列表,请问监听器是何时添加到 DefaultListableFactory的applicationListeners属性里面的?
protected void registerListeners() {
// 首先注册静态的指定的监听器
for (ApplicationListener<?> listener : getApplicationListeners()) {
getApplicationEventMulticaster().addApplicationListener(listener);
}
// 不要在这里初始化factorybean:我们需要保留所有未初始化的常规bean(事件监听器),
// 让后处理器应用到它们!
String[] listenerBeanNames = getBeanNamesForType(ApplicationListener.class, true, false);
for (String listenerBeanName : listenerBeanNames) {
getApplicationEventMulticaster().addApplicationListenerBean(listenerBeanName);
}
// 至此,已经完成将监听器注册到ApplicationEventMulticaster中,
// 现在我们最终拥有一个多路广播器来发布前期的应用程序事件给监听器.
Set<ApplicationEvent> earlyEventsToProcess = this.earlyApplicationEvents;
this.earlyApplicationEvents = null;
if (earlyEventsToProcess != null) {
for (ApplicationEvent earlyEvent : earlyEventsToProcess) {
getApplicationEventMulticaster().multicastEvent(earlyEvent);
}
}
}
写回答
1回答
-
翔仔
2021-02-05
同学好,listener其实就是和系统配置bean一样,在前面初始化基础服务的时候就被加载进来了,和我们后面要讲解的processor是一样的
00
相似问题