Mybatis拦截器的使用方法参考官方文档:http://mybatis.org/mybatis-3/zh/configuration.html#plugins
JDK动态代理示例
Mybatis的拦截器是通过jdk的动态代理实现的,只能生成接口的实例。这里先定义一个接口及实现。
public interface AshanService
{
public void service(String name);
}
public class AshanServiceImpl implements AshanService
{
@Override
public void service(String name)
{
System.out.println("Hello "+name);
}
}
JDK实现动态代理
public class JdkDynamicProxy
{
public static void main(String[] args)
{
//JDK动态代码要求实现InvocationHandler
class AshanInvocationHandler implements InvocationHandler
{
private Object target;
public AshanInvocationHandler(Object obj)
{
this.target=obj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable
{
System.out.println("jdk dynamic proxy before..");
Object ret=method.invoke(this.target, args);
System.out.println("jdk dynamic proxy after..");
return ret;
}
}
AshanService service=new AshanServiceImpl();
AshanInvocationHandler handler=new AshanInvocationHandler(service);
//利用proxy生成一个代理对象
AshanService proxy=(AshanService)Proxy.newProxyInstance(service.getClass().getClassLoader(), service.getClass().getInterfaces(), handler);
proxy.service("jdk dynamic proxy");
}
}
输出内容为
jdk dynamic pro