cglib动态代理(需导入cglib-nodep-2.1_3.jar)
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(); } }