Spring AOP代理流程分析
2024-03-01 10:47:53 0 举报
Spring AOP代理流程分析是一个涉及多个步骤的过程,目的是在运行时动态地将切面代码编织到目标对象中。首先,Spring会查找所有符合条件的切面类,这些切面类实现了特定的接口或注释。然后,对于每个切面类,Spring会创建一个代理对象,该对象实现了目标对象的所有方法,并在适当的时候执行切面代码。最后,将原始对象的所有方法调用代理给代理对象,这样切面代码就能在适当的时机执行,而不会影响原始对象的行为。整个过程通过Spring AOP框架自动完成,从而简化了面向切面编程的复杂性。
作者其他创作
大纲/内容
AdviceMethodInterceptor
通知类型前置通知后置通知最终通知环绕通知异常通知
一个Advisor里面对应一个Advice
产生代理对象流程
InvocationHandlerinvoke() { 增强逻辑1(Advice) 增强逻辑2(Advice) 目标对象的方法调用 增强逻辑3(Advice)}
JDK或CGLIB
代理对象
事务管理
Advisor有很多需要针对目标对象进行匹配
InvocationHandler h;
通过通知类型来控制通知功能相对于目标对象的方法,应该何时去增强。
Advice
适配器模式MethodInterceptor ---> MethodInvocation
通知类型:AspectJAfterReturningAdvice AspectJMethodBeforeAdviceAspectJAfterAdviceAspectJAroundAdviceAspectJAfterThrowingAdvice
......
// MethodLocatingFactoryBean(Method对象)// SimpleBeanFactoryAwareAspectInstanceFactory(对象实例)
通知功能
AspectJPointcutAdvisor
AspectJExpressionPointcut
save() { .... .... }
时间轴
Advisors集合
MethodInvocation的执行时间轴JoinPoint(被增强的目标方法))
目标对象
Advisor
Advisor是Ponitcut和Advice的组合对象一个目标对象可以被多个Advisor进行功能增强
save() { .... this.h.invoke(....); .... }
日志监控
PointCut切入点表达式 MethodMatcher ClassFilter
AspectJAwareAdvisorAutoProxyCreator
MethodInterceptor.proceed(MethodInvocation)
0 条评论
下一页