一个简单的例子
public interface AnimalInterface {
public void cry();
}
public class AnimalImpl implements AnimalInterface {
public void cry() {
// TODO Auto-generated method stub
System.out.println("crying");
}
}
public class MyCglib implements MethodInterceptor {
private Object proxied;
private MyCglib(Object proxied) {
this.proxied = proxied;
}
public static Object getProxy(Object proxied) {
MyCglib cglib = new MyCglib(proxied);
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(proxied.getClass());
enhancer.setCallback(cglib);
return enhancer.create();
}
public Object intercept(Object obj, Method method, Object[] args,
MethodProxy proxy) throws Throwable {
Object ret;
System.out.println("Before Method Invoke");
ret = method.invoke(proxied, args);
System.out.println("After Method Invoke");
return ret;
}
}
public class Test {
public static void main(String[] args) {
AnimalImpl animal = (AnimalImpl) MyCglib.getProxy(new AnimalImpl());
animal.cry();
}
}