关于spring:Interceptor记录方便查阅

Interceptor接口

/* 这个接口代表一个通用的拦截器。 
* 通用拦截器能够拦挡在根底程序中产生的运行时事件。这些工夫具体化为Joinpint(连接点)。运行时连接点能够是调用、字段拜访、异样等等。 
* 这个接口通常不会间接应用。用子接口拦挡具体的事件。 例如,上面的类实现了具体的拦截器来实现调试器。
 * class DebuggingInterceptor implements MethodInterceptor,
 *     ConstructorInterceptor {
 *
 *   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();
 *   }
 * 
 *   void debug(AccessibleObject ao, Object this, Object value) {
 *     ...
 *   }
 * }
 
 public interface Interceptor extends Advice {
 
 }

MethodInterceptor接口

/* 在接口达到指标的途中拦挡接口上的调用。它们嵌套在指标的“顶部”。
 用户应该实现 invoke(MethodInvacation) 办法,来批改原来的行为。一下的类 实现了一个跟踪拦截器
 * class TracingInterceptor implements MethodInterceptor {
 *   Object invoke(MethodInvocation i) throws Throwable {
 *     System.out.println("method "+i.getMethod()+" is called on "+
 *                        i.getThis()+" with args "+i.getArguments());
 *     Object ret=i.proceed();
 *     System.out.println("method "+i.getMethod()+" returns "+ret);
 *     return ret;
 *   }
 * }
 
 @FunctionalInterface
public interface MethodInterceptor extends Interceptor {

    @Nullable
    Object invoke(@Nonnull MethodInvocation invocation) throws Throwable;

}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理