Interceptor

拦截器,对原方法调用的拦截,可以在此处加入自己的逻辑。其中intercept方法实现拦截逻辑,plugin方法返回一个对目标对象的代理,然后再代理对象里调用intercept。

InterceptorChain

拦截链,封装多个Interceptor,分别调用这些Interceptor的plugin方法实现对目标对象的代理。

Invocation

对目标对象、参数、方法的封装。

Plugin

实现了InvocationHandler,是一个代理类。可以在Interceptor#plugin方法中使用Plugin#wrap方法返回一个代理对象,Plugin#invoke方法中调用Interceptor#intercept方法实现拦截功能。

Intercepts

拦截器注解,使用在类上标识该类是一个拦截器。

Signature

一个注解,指示要对什么类的什么方法进行拦截。

Configuration

拦截器会对Executor、StatementHandler、ParameterHandler、ResultSetHandler四个类进行拦截。在Configuration中构建这四个对象时调用InterceptorChain#pluginAll方法返回一个代理,在这些代理中实现拦截逻辑。