参考内容来自mybatis技术内幕
1.简要概括
mybatis的拦截器主要是采用责任链以及jdk动态代理进行实现的,关于我们自定义拦截器允许拦截Executor的方法、ParameterHandler、ResultSetHandler、以及StatementHandler类中的方法。
mybatis中自定义拦截器都需要实现Interceptor接口,以及使用@Intercepts和@Signature两个注解进行标识。
到时候由plugin.wrap创建所需代理类,在进行方法执行之时,Plugin.invoke会进行方法判断,看是否需要进行拦截器进行拦截,如需拦截调用Interceptor.intercept接口进行拦截调用,invocation中提供了一个proceed方法可以进行完拦截器处理逻辑之后进行拦截调用