Cglib的使用方法(2)CallbackFilter
生活随笔
收集整理的這篇文章主要介紹了
Cglib的使用方法(2)CallbackFilter
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
cglib系列文章索引
Cglib的使用方法(1)--Enhancer
Cglib的使用方法(2)--CallbackFilter
Cglib的使用方法(3)--Mixin
Cglib的使用方法(4)--BeanCopier
CallbackFilter可以實現不同的方法使用不同的回調方法
CallbackFilter中的accept方法, 根據不同的method返回不同的值i, 這個值是在callbacks中的順序, 就是調用了callbacks[i]
import java.lang.reflect.Method;
import net.sf.cglib.proxy.Callback;
import net.sf.cglib.proxy.CallbackFilter;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
import net.sf.cglib.proxy.NoOp;
public class CallbackFilterDemo {
public static void main(String[] args) {
Callback[] callbacks = new Callback[] {
new MethodInterceptorImpl(), NoOp.INSTANCE
};
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(MyClass.class);
enhancer.setCallbacks(callbacks);
enhancer.setCallbackFilter(new CallbackFilterImpl());
MyClass myClass = (MyClass) enhancer.create();
myClass.method();
myClass.method1();
}
private static class CallbackFilterImpl implements CallbackFilter {
@Override
public int accept(Method method) {
if (method.getName().equals("method"))
return 1;
else
return 0;
}
}
private static class MethodInterceptorImpl implements MethodInterceptor {
@Override
public Object intercept(Object obj, Method method, Object[] args,
MethodProxy proxy) throws Throwable {
System.err.println("Before invoke " + method);
Object result = proxy.invokeSuper(obj, args);
System.err.println("After invoke" + method);
return result;
}
}
}
class MyClass {
public void method() {
System.out.println("MyClass.method()");
}
public void method1() {
System.out.println("MyClass.method()1");
}
}
作者:icejoywoo
出處:http://www.cnblogs.com/icejoywoo/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利.
短網址: http://goo.gl/ZiZCi
總結
以上是生活随笔為你收集整理的Cglib的使用方法(2)CallbackFilter的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为存储设备管理ip修改
- 下一篇: Python+Opencv常用小工具集合