返回介绍

7.1 插件接口

发布于 2025-04-26 13:08:34 字数 868 浏览 0 评论 0 收藏

在 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)模式,就是提供一个骨架,并且告知骨架中的方法是干什么用的,由开发者来完成它。在实际中,我们常常用到模板模式。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。