文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
7.1 插件接口
在 MyBatis 中使用插件,我们就必须实现接口 Interceptor,让我们先看看它的定义和各个方法的含义,如代码清单 7-1 所示。
代码清单 7-1:Interceptor.java
public interface Interceptor { Object intercept(Invocation invocation) throws Throwable; Object plugin(Object target); void setProperties(Properties properties); }
在接口中,运用了 3 个方法,让我们先掌握这 3 个方法的含义。
intercept 方法:它将直接覆盖你所拦截对象原有的方法,因此它是插件的核心方法。intercept 里面有个参数 Invocation 对象,通过它可以反射调度原来对象的方法,我们稍后讨论它的设计和使用。
plugin 方法:target 是被拦截对象,它的作用是给被拦截对象生成一个代理对象,并返回它。为了方便 MyBatis 使用 org.apache.ibatis.plugin.Plugin 中的 wrap 静态(static)方法提供生成代理对象,我们往往使用 plugin 方法便可以生成一个代理对象了。当然你也可以自定义。自定义去实现的时候,需要特别小心。
setProperties 方法:允许在 plugin 元素中配置所需参数,方法在插件初始化的时候就被调用了一次,然后把插件对象存入到配置中,以便后面再取出。
这里我们看到了插件的骨架,这样的模式我们称为模板(template)模式,就是提供一个骨架,并且告知骨架中的方法是干什么用的,由开发者来完成它。在实际中,我们常常用到模板模式。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论