import org.springframework.cglib.proxy.MethodInterceptor; import org.springframework.cglib.proxy.MethodProxy; import java.lang.reflect.Method; public class MyCallback implements MethodInterceptor { @Override public Object intercept(Object o, Method method, Object[] params, MethodProxy methodProxy) throws Throwable { System.out.println("增强方法开始:" + method.getName()); Object result = methodProxy.invokeSuper(o, params); System.out.println(" 方法返回结果: " + result); System.out.println("增强方法结束:" + method.getName()); return result; } }
import org.springframework.cglib.proxy.Callback; import org.springframework.cglib.proxy.Enhancer; public class ProxyFactory { public static Object createProxy(Class<?> clazz, Callback callback) { Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(clazz); enhancer.setCallback(callback); return enhancer.create(); } }
import com.asiainfo.crm.xxx.service.Shape; import com.asiainfo.crm.xxx.service.impl.Cycle; public class Main { public static void main(String[] args) { MyCallback myCallback = new MyCallback(); Shape student = (Shape) ProxyFactory.createProxy(Cycle.class, myCallback); student.getName(); } }
增强方法开始:getName 方法返回结果: 圆形 增强方法结束:getName Process finished with exit code 0
标签:enhancer,cglib,getName,Object,代理,Cglib,import,动态,public From: https://www.cnblogs.com/steven-note/p/16967963.html