Java面试题

题目

简述 Mybatis 的插件运行原理,以及如何编写一个插件。

答案

Mybatis 仅可以编写针对 ParameterHandler、ResultSetHandler、StatementHandler、Executor 这 4 中接口的插件,Mybatis 使用 JDK 的动态代理,为需要拦截的接口生成代理对象以实现接口方法拦截功能,每当执行这 4 种接口方法时,就会进入拦截方法,具体就是 InvocationHandler 的 invoke() 方法。

编写插件,实现 Mybatis 的 Interceptor 的接口并复写 intercept() 方法,然后在给插件写注释,指定要拦截哪一个接口的那些方法,需要在配置文件中维护插件。