spring监听器源码流程
2021-11-10 10:32:59 3 举报
spring容器创建过程中各个阶段监听器源码流程
作者其他创作
大纲/内容
监听器工厂bean定义,会在调用EventListenerMethodProcessor bean工厂的后置处理器时创建,赋值给EventListenerMethodProcessor
registerListeners
finishRefresh
beanDefinition
完成容器刷新,发布容器刷新完成事件,,这是bean已经全部加载完成是发布
beanName
bean初始化后,调用bean的后置处理器中的postProcessAfterInitialization方法,将继承applicationListener的bean创建监听器并且注册到事件多播器中。注意这里才是真正的注册监听器,前面只是将名字注册到了多播器,是为了防止@Lazy加载时漏注册
prepareBeanFactory()给bean工厂填充属性
internalEventListenerFactory
afterSingletonsInstantiated
ApplicationEventPublisherAware填充事件发布器,使用到bean是可以通过@Autowire注解获取
finishBeanFactoryInitialization
beanDefinitionMap
DefaultEventListenerFactory
invokeBeanFactoryPostProcessors()
internalEventListenerProcessor
bean的处理器用于bean完全加载后,将有@EventListener注解的注册监听器到多播器
所以bean都已经注册到beanFactory后,调用EventListenerMethodProcessor中的afterSingletonsInstantiated进行@EventListener注解解析,创建监听器并且注册到事件多播器中
EventListenerMethodProcessor
创建事件多播器(SimpleApplicationEventMulticaster),事件调度选择,默认是同步调度的也可以通过创建一个Excuetor实现异步事件
注册监听器,注册继承applicationListener的bean的beanName到事件多播器,同时这里也会进行早期事件的发布
注册监听器beanDefinition
创能IOC容器
initApplicationEventMulticaster
调用EventListenerMethodProcessor的后置处理器创建DefaultEventListenerFactory到自己
显示添加ApplicationListenerDetector Bean的后置处理器,在bean初始化后,将继承ApplicationListener的bean创建监听器注册到多播器中
0 条评论
下一页