import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;
import java.lang.reflect.Method;
public class CGLib implements MethodInterceptor {
//目标类
private Object targetObject;
//绑定
public Object newProxyInstance(Object targetObject){
this.targetObject = targetObject;
Enhancer enhancer = new Enhancer();
//设置目标类的父类
enhancer.setSuperclass(this.targetObject.getClass());
//设置回调函数
enhancer.setCallback(this);
//创建代理对象
return enhancer.create();
}
@Override
public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
Object result = null;
try {
result = methodProxy.invokeSuper(o,objects);
}catch (Exception e){
e.printStackTrace();
}
return result;
}
}
public class ProxyTest {
public static void main(String[] args) {
CGLib cgLib = new CGLib();
PayService payService = (PayService)cgLib.newProxyInstance(new PayServiceImpl());
payService.save(12313,6456);
}
}