接口 Interceptor

所有超级接口:
Advice
所有已知子接口:
ConstructorInterceptor, FieldInterceptor, IntroductionInterceptor, MethodInterceptor
所有已知实现类:
AbstractMonitoringInterceptor, AbstractTraceInterceptor, AfterReturningAdviceInterceptor, AspectJAfterAdvice, AspectJAfterThrowingAdvice, AspectJAroundAdvice, AsyncExecutionInterceptor, ConcurrencyThrottleInterceptor, CustomizableTraceInterceptor, DebugInterceptor, DelegatePerTargetObjectIntroductionInterceptor, DelegatingIntroductionInterceptor, ExposeBeanNameAdvisors.ExposeBeanNameInterceptor, ExposeBeanNameAdvisors.ExposeBeanNameIntroduction, ExposeInvocationInterceptor, MethodBeforeAdviceInterceptor, PerformanceMonitorInterceptor, RuntimeMethodInterceptor, SimpleTraceInterceptor, ThrowsAdviceInterceptor

public interface Interceptor extends Advice
This interface represents a generic interceptor.

A generic interceptor can intercept runtime events that occur within a base program. Those events are materialized by (reified in) joinpoints. Runtime joinpoints can be invocations, field access, exceptions...

This interface is not used directly. Use the the sub-interfaces to intercept specific events. For instance, the following class implements some specific interceptors in order to implement a debugger:

 class DebuggingInterceptor implements MethodInterceptor,
     ConstructorInterceptor, FieldInterceptor {

   Object invoke(MethodInvocation i) throws Throwable {
     debug(i.getMethod(), i.getThis(), i.getArgs());
     return i.proceed();
   }

   Object construct(ConstructorInvocation i) throws Throwable {
     debug(i.getConstructor(), i.getThis(), i.getArgs());
     return i.proceed();
   }

   Object get(FieldAccess fa) throws Throwable {
     debug(fa.getField(), fa.getThis(), null);
     return fa.proceed();
   }

   Object set(FieldAccess fa) throws Throwable {
     debug(fa.getField(), fa.getThis(), fa.getValueToSet());
     return fa.proceed();
   }

   void debug(AccessibleObject ao, Object this, Object value) {
     ...
   }
 }
 
另请参阅: