09. Spring Framework Event
2022-03-16 20:17:11 0 举报
AI智能生成
Spring 事件机制
作者其他创作
大纲/内容
EventListenerMethodProcessor
处理 @EventListener 注解
处理 @EventListener 注解
postProcessBeanFactory
因为实现了【BeanFactoryPostProcessor】接口,所以会回调这个方法
因为实现了【BeanFactoryPostProcessor】接口,所以会回调这个方法
从容器中获取所有的【EventListenerFactory】并排序
保存到【eventListenerFactories】列表中
保存到【eventListenerFactories】列表中
afterSingletonsInstantiated()
因为实现了【SmartInitializingSingleton】接口,所以会在初始完所有 bean 之后回调这个方法
因为实现了【SmartInitializingSingleton】接口,所以会在初始完所有 bean 之后回调这个方法
processBean(beanName, type)
循环对容器中的每个组件调用次方法处理
循环对容器中的每个组件调用次方法处理
找到这个组件所有被 @EventListener 注解标注的方法
factory.createApplicationListener()
循环每一个方法,利用工厂创建适配器监听器
循环每一个方法,利用工厂创建适配器监听器
把适配器添加注册到容器和事件派发器
事件派发器实现了监听器接口
最终事件在派发时,首先发给适配器,由适配器找到对应的目标方法通过发射执行
事件派发器实现了监听器接口
最终事件在派发时,首先发给适配器,由适配器找到对应的目标方法通过发射执行
ApplicationEventPublisher
事件发布
事件发布
如果事件属于 ApplicationEvent,就强转
不属于就包装成 PayloadApplicationEvent
不属于就包装成 PayloadApplicationEvent
getApplicationEventMulticaster()
从容器中获取事件派发器
从容器中获取事件派发器
multicastEvent()
筛选对此事件类型感兴趣的监听器,再对这些监听器调用 onApplicationEvent() 方法
筛选对此事件类型感兴趣的监听器,再对这些监听器调用 onApplicationEvent() 方法
ApplicationListenerMethodAdapter
事件监听
事件监听
onApplicationEvent()
因为实现了【ApplicationListener】接口,所以会接收到事件通知
因为实现了【ApplicationListener】接口,所以会接收到事件通知
processEvent(event)
处理事件
处理事件
doInvoke(args)
利用反射调用事件
利用反射调用事件
0 条评论
下一页