package com.sf.design.proxy; import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; import java.io.IOException; import java.lang.reflect.Method; // cglib动态代理 // 添加jvm参数 --add-opens java.base/java.lang=ALL-UNNAMED public class CglibProxyDemo { // 目标类 static class MyLife { public void learn() { System.out.println("learn"); } } public static void main(String[] args) throws IOException { // 目标对象 MyLife myLife = new MyLife(); // 接收代理对象 // cglib的动态代理是基于 继承目标类 extends MyLife MyLife object = (MyLife)Enhancer.create(MyLife.class, new MethodInterceptor() { @Override public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable { System.out.println("before"); Object result = method.invoke(myLife, objects); System.out.println("after"); return result; } }); object.learn(); System.out.println(object.getClass()); System.in.read(); } }