package proxy;
import java.lang.reflect.Method;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
public class TestCgLib {
/**
* @param args
*/
public static void main(String[] args) {
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(A.class);
enhancer.setCallback(new MyMethodInterceptor());
A a = (A) enhancer.create();
a.print();
}
}
class MyMethodInterceptor implements MethodInterceptor {
@Override
public Object intercept(Object arg0, Method method, Object[] arg2, MethodProxy proxy) throws Throwable {
System.out.println("Before invoke " + method);
Object result = proxy.invokeSuper(arg0, arg2);
System.out.println("After invoke" + method);
return result;
}
}
class A {
int i = 0;
public void print() {
System.out.println("i-" + i);
}
}
最后打印出来是:
Before invoke public void proxy.A.print()
i-0
After invokepublic void proxy.A.print()