AOP切面编程 --- CGLib动态代理

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);
}
}


posted @ 2021-11-26 22:43  智慧搬运工  阅读(36)  评论(0)    收藏  举报