Mybatis 源码解读-Plugin插件源码
作者源码阅读笔记主要采用金山云文档记录的,所有的交互图和代码阅读笔记都是记录在云文档里面,本平台的文档编辑实在不方便,会导致我梳理的交互图和文档失去原来的格式,所以整理在文档里面,供大家阅读交流.
【金山文档 | WPS云文档】 Plugin插件源码
核心接口与核心类
Interceptor
接口
核心功能:所有自定义插件必须实现的接口,定义拦截逻辑
关键方法:
Object intercept(Invocation invocation) throws Throwable;
Object plugin(Object target);
void setProperties(Properties properties);
intercept()
:执行实际拦截逻辑,通过 invocation.proceed()
调用原始方法
plugin()
:生成目标对象的代理类
Invocation
类
作用:封装被拦截方法的信息(目标对象、方法、参数等)
核心方法:
Object proceed(); // 执行原始方法
Method getMethod(); // 获取被拦截的Method对象
通过 proceed()
实现责任链调用