SpringAop架构
2020-07-31 14:25:40 0 举报
SpringAOP核心类UML图
作者其他创作
大纲/内容
AspectJAfterThrowingAdvice
+ invoke(MethodInvocation):Object
InstantiationModelAwarePointcutAdvisorImpl
- declaredPointcut:AspectJExpressionPointcut- declaringClass:Class- aspectJAdviceMethod:Method
<Interface>PointcutAdvisor
+ getPointcut():Pointcut
<Abstract>AbstractExpressionPointcut
<Interface>Joinpoint
+ proceed():Object+ getThis():Object+ getStaticPart():AccessibleObject
<Interface>Pointcut
+ getClassFilter():ClassFilter+ getMethodMatcher(): MethodMather
对方法引用的描述,也是一个连接点可以被拦截器拦截。
<Interface>MethodInterceptor
+invoke(MethodInvocation):Object
对方法调用事件的拦截,Spring只实现了这种方式的拦截。按照AOP联盟的规范可以有很多种拦截方式。
通过一个表达式实现的切入点
<Interface>Interceptor
ReflectiveMethodInvocation
# proxy:Object# taget:Object# method:Method# arguments:Object[]# interceptorsAndDynamicMethodMatchers:List
AspectJMethodBeforeAdvice
<Interface>MethodMatcher
使用AspectJ表达式的切入点
允许通过代理对方法引用
MethodBeforeAdviceInterceptor
- advice:MethodBeforeAdvice
此接口表示通用拦截器。通用拦截器可以拦截基本程序中发生的运行时事件。这些事件由(在其中)连接点实现。运行时连接点可以是调用,字段访问,异常...此接口不直接使用。使用子接口拦截特定事件。
DynamicAdvisedInterceptor
AnnotationMatchingPointcut
<Interface>MethodInvocation
+ getMethod():Method
<Interface>Advice
<Interface>ClassFilter
+ matches(Class):boolean
<Interface>BeforeAdvice
AfterReturningAdviceInterceptor
- advice:AfterReturningAdvice
<Interface>Advisor
+ getAdvice():Advice
<Interface>MethodBeforeAdvice
<Interface>InstantiationModelAwarePointcutAdvisor
增强器
<Interface>Invocation
+ getArguments():Object[]
AspectJAroundAdvice
<Interface>AfterAdvice
AspectJAfterAdvice
表达切入点的抽象超类,提供位置和表达式属性
Spring实现了AOP Alliance MethodInvocation接口,实现了扩展的ProxyMethodInvocation接口。使用反射调用目标对象
CglibMethodInvocation
此接口表示通用运行时连接点(在AOP术语中)。运行时连接点是在静态连接点(即程序中的位置)上发生的事件。例如,调用是方法(静态连接点)上的运行时连接点。可以使用getStaticPart()方法一般地检索给定连接点的静态部分。在拦截框架的上下文中,运行时连接点然后是对可访问对象(方法,构造函数,字段)的访问的具体化,即连接点的静态部分。它被传递给安装在静态连接点上的拦截器
由切入点驱动的所有顾问的超级接口。这涵盖几乎所有顾问。
核心Spring切入点抽象。切入点由ClassFilter和MethodMatcher组成
切入点的一部分:检查目标方法是否符合通知的条件
此接口表示程序中的调用。调用也是一个连接点,所以能被拦截!这是对“调用”的抽象,我觉得这个调用可以是方法引用、字段引用等
<Interface>ProxyMethodInvocation
+ getProxy():Object+ invocableClone():MethodInvocation+ setArguments(Object[]):void
一个标记接口
一个简单的用于搜索指定注解的切入点
<Interface>IntroductionAwareMethodMatcher
<Interface>ExpressionPointcut
+ getExpression():String
AspectJAfterReturningAdvice
AspectJExpressionPointcut
0 条评论
下一页