06. Spring AOP流程剖析
2021-05-08 14:15:21 7 举报
Spring AOP源码解析流程
作者其他创作
大纲/内容
// 完成指定Bean对象创建的方法#doCreateBean
执行代理方法
ProxyFactory
// 创建AOP代理类#createProxy
// 调用BeanPostProcessor的回调方法,执行Bean初始化之后的操作#applyBeanPostProcessorsAfterInitialization
// 获取AopProxyFactory#getAopProxyFactory()
// DI创建Bean实例#createBean
// DI创建Bean实例#doGetBean
// 生成Bean的代理类#createAopProxy(this)
触发AOP通知
// 创建指定Bean的AOP代理类#createAopProxy
AdvisedSupport
// 获取AOP代理对象#createAopProxy
// 获取Bean定义的所有AOP通知#getAdvicesAndAdvisorsForBean
Spring AOP初始化流程
// 执行AOP通知#getInterceptorsAndDynamicInterceptionAdvice
DefaultAdvisorChainFactory
// 执行被代理类方法#invoke
AOP初始化是在DI时发生的。因为AOP需要生成Bean的代理类,所以需要在Bean初始化完成后,生成代理类,放到IoC容器中。
生成AOP代理类
// 基于指定的ClassLoader和Factory设置,创建AOP代理类#getProxy
// 获取目标类的拦截器链#getInterceptorsAndDynamicInterceptionAdvice
// 基于JDK动态代理生成代理类#createAopProxy
AbstractAutowireCapableBeanFactory
// 选择代理策略#postProcessAfterInitialization
AbstractBeanFactory
JdkDynamicAopProxy
// 如果给定的Bean符合AOP条件,则生成代理类。#wrapIfNecessary
寻找入口
选择代理策略
ProxyCreatorSupport
DefaultAopProxyFactory
AbstractAutoProxyCreator
// 初始化容器创建的Bean实例对象#initializeBean
0 条评论
回复 删除
下一页