AOP代理对象调用流程图
2021-03-25 21:31:32 3 举报
AOP代理对象调用流程图
作者其他创作
大纲/内容
this.currentInterceptorIndex == this.interceptorsAndDynamicMethodMatchers.size() - 1
ExposeInvocationInterceptor.invoke(this)
currentInterceptorIndex ++
缓存中没有
Interface.method
try
invocation.proceed();
拦截器链堆栈信息
AfterReturnAdvice.invoke(this)
AspectJAfterThrowingAdvice.invoke(this)
异常?
返回通知
0 != 5 -1
1
-1 != 5 -1
2 != 5 -1
获取方法上的拦截器链getInterceptorsAndDynamicInterceptionAdvice
缓存中获取拦截器链
ReflectiveMethodInvocation
1 != 5 -1
执行finally,执行后置通知(after)
调用前一系列的判断
执行before方法
mi.proceed()
catch代码块
AspectJAfterAdvice.invoke(this)
currentInterceptorIndex ++
3 != 5 -1
创建反射的方法调用对象
代理方法执行
try代码块
3
0
DefaultAdvisorChainFactory#getInterceptorsAndDynamicInterceptionAdvice
根据advised.exposeProxy判读是否需要暴露代理对象
AspectJmethodBeforeAdvice.invoke(this)
N
JdkDynamicAopProxy#invoke
调用目标方法invokeJoinpoint()
异常通知
Y:通过反射直接调用
2
4 != 5 -1
判断后续有没有抛异常
缓存中有
china.isEmpry()
直接返回方法调用链
4
currentInterceptorIndex ++
0 条评论
回复 删除
下一页