SpringAOP执行动态搭理方法调用链过程
2021-12-11 15:29:28 0 举报
SpringAOP执行动态搭理方法调用链过程
作者其他创作
大纲/内容
后置通知:在目标方法退出的时候执行
是
前置通知:在目标方法执行之前执行
@PointCut
执行nvoke方法
执行目标方法
切入点:配置切入点,通知方法会织入到切入点范围的目标方法
在了解了基本概念之后,我们来聊一聊springAOP动态代理调用方法的过程中,是如何执行切面的调用链的
先说一下AOP切面通知类型的基本概念
否
调用动态代理方法
@Around
返回后通知,也称返回后通知:在目标方法执行后执行,能够获取到目标方法的返回值,可以根据这这个返回值做不同的处理功能
此方法实现了AOP增强的所有逻辑
异常通知:在目标方法抛出异常的时候执行
AOP切面通知的类型
实现了InvocationHandler接口
获取当前方法所有的增强器
执行拦截器链方法ReflectiveMethodInvocation.proceed()
springAOP调用链过程源码解析
环绕通知:在目标方法执行前、后执行通知
@AfterThrow
@AfterReturn
@Before
下面拿Spring中的JDK动态代理来举例
重点:调用拦截器链方法使用了责任链模式+递归的方式ReflectiveMethodInvocation是Spring对MethodInvocation接口的实现类中定义了一个变量,来记录当前拦截器链执行的位置,实现递归方法队跳出逻辑:private int currentInterceptorIndex = -1;当拦截器执行到最后一个方法时:执行目标方法,否则继续获取下一个拦截器递归执行proceed()方法
@After
JDKDynamicAopProxy
判断增强器是否为空
0 条评论
下一页