插件:
插件存在的目的就相当于javaweb中的拦截器,可以拦截要操作的四大对象,包装对象
额外添加内容,使得Mybatis的灵活性更强。
插件原理
* 在四大对象创建的时候
* 1、每个创建出来的对象不是直接返回的,而是
* interceptorChain.pluginAll(parameterHandler);
* 2、获取到所有的Interceptor(拦截器)(插件需要实现的接口);
* 调用interceptor.plugin(target);返回target包装后的对象
* 3、插件机制,我们可以使用插件为目标对象创建一个代理对象;AOP(面向切面)
* 我们的插件可以为四大对象创建出代理对象;
* 代理对象就可以拦截到四大对象的每一个执行;
总结:
如果是插件声明拦截的对象,那么就会plugin返回包装类,为其创建一个代理对象,可以对指定方法进行拦截。