首先阐述几个概念:
在org.aopalliance.intercept中存在下面一些概念:
接口种类
ConstructorInterceptor:拦截对象的构造器调用
ConstructorInvocation:构造器调用的描述,在调用者调用时给到拦截器。
FieldAccess:程序中属性访问描述。
FieldInterceptor:目标对象属性访问拦截器
Interceptor:拦截器
Inovcation:调用描述
Jointpoint:发生拦截的程序位置
MethodIntercetpor:方法拦截器
MethodInvocation:方法调用描述
MethodInovcation(interface):方法调用,在方法调用时会赋给拦截器使用。方法调用是一个连接点,可以被方法拦截器拦截。有一个方法getMethod(),即获取调用的方法,以及继承于Invocation中的getArguments和继承自Jointpoint的getStaticPart、getThis和proceed等方法。getMethod方法是Jointpoint.getStaticPart()方法的类似实现(返回相同结果)。
Invocation(interface):表示程序中一次调用,invocation实质是Jointpoint并且能被拦截器拦截。内有getArguments方法,作用为获取参数作为数组对象,可以更改此数组中的元素值以更改参数。
Joinpoint(interface):该接口表示一个普通的运行时连接点(在AOP技术中)。运行时连接点是在静态连接点(例如,程序中某一位置)上发生的事件。例如,一次调用是方法的运行时连接点。而连接点可以通过getStaticPart()方法获取。在拦截器拦截体系中,运行时拦截点是一个访问对象(一个方法,一个构造器或者一个属性等)的细化处理。它可被传递给安装在静态连接点上的拦截器中。[大致可以理解为静态连接点就是代码的具体位置,动态连接点就是拦截器存放的代码位置]。
Interceptor(interface):通用拦截器可以拦截在基本程序中发生的运行时事件。这些事件由连接点实现。运行时连接点可以是调用,字段访问,异常...。此接口不直接使用。可以使用子接口拦截特定事件。例如,以下类实现一些特定的拦截器以实现调试器:
Advice(interface):Advice的标签接口,它的实现可以使任何类型,例如Interceptor。