github代码: https://github.com/Gefuxing/proxytest.git
动态代理 jdk public class ProxyTest { public static void main(String[] args) { /** * jdk动态代理 */ UserService userService = new UserServiceImpl(); InvocationHandler handler = new MyInvocationHandler<UserService>(userService); UserService proxy= (UserService) Proxy.newProxyInstance(UserService.class.getClassLoader(), new Class[]{UserService.class}, handler); User userById = proxy.findUserById(1); System.out.println(userById.toString()); /** * cglib动态代理 */ } } public class MyInvocationHandler<T> implements InvocationHandler { private T targe; public MyInvocationHandler(T targe) { this.targe = targe; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object invoke = method.invoke(targe, args); return invoke; } } cglib public class MainTest { public static void main(String[] args) { Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(UserCglib.class); enhancer.setCallback(new UserCglbInterceptor()); UserCglib userCglib = (UserCglib) enhancer.create(); String gfx = userCglib.getName("gfx"); Integer num = userCglib.getNum(0); System.out.println("cglib"+gfx+"-"+num); } } public class UserCglbInterceptor implements MethodInterceptor { @Override public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable { Object invoke = methodProxy.invokeSuper(o, objects); System.out.println("cglib代理方法"); return invoke; } }