package com.java110.core.proxy; import org.assertj.core.internal.cglib.proxy.Enhancer; import org.assertj.core.internal.cglib.proxy.MethodInterceptor; import org.assertj.core.internal.cglib.proxy.MethodProxy; import java.lang.reflect.Method; /** * @ClassName CglibProxy * @Description TODO * @Author wuxw * @Date 2019/5/15 16:50 * @Version 1.0 * add by wuxw 2019/5/15 **/ public class CglibProxy implements MethodInterceptor { private Enhancer enhancer = new Enhancer(); public Object getProxy(Class clazz){ //设置需要创建子类的类 enhancer.setSuperclass(clazz); enhancer.setCallback(this); //通过字节码技术动态创建子类实例 return enhancer.create(); } //实现MethodInterceptor接口方法 public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { System.out.println("代理" + method.getName()); //通过代理类调用父类中的方法 return "123213"; } }