1、自定义拦截器类,实现 Interceptor 接口
@Intercepts({
@Signature(type = StatementHandler.class,
method = "prepare",args = {Connection.class,Integer.class})
})
public class MyInterceptor implements Interceptor {
/**
* 拦截方法:只要被拦截的目标对象的目标方法被执行时,每次都会执行 intercept 方法
*/
@Override
public Object intercept(Invocation invocation) throws Throwable {
System.out.println("对方法进行增强......");
return invocation.proceed();
}
/**
* 主要为了把当前的拦截器生成代理存到拦截器链中
*/
@Override
public Object plugin(Object target) {
Object wrap = Plugin.wrap(target, this);
return wrap;
}
@Override
public void setProperties(Properties properties) {
System.out.println("sqlConfig配置property属性:" + properties);
}
}
2、核心配置文件中配置插件也就是拦截器属性
<plugins>
<plugin interceptor="com.myinterceptor.MyInterceptor">
<property name="name" value="jack"/>
</plugin>
</plugins>