package com.yanghao.CglibProxy;
import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
/**
* @ClassName ProxyTest
* @Description 前提:一个目标对象(被代理的方法),一个增强类含增强方法,代理实现类(本方法)
* @Author Yanghao2
* @Date 2022/1/7 6:34
* @Version V1.0
*/
public class ProxyTest {
public static void main(String[] args) {
final Target target = new Target();
final Advice advice = new Advice();
//返回值就是动态代理生成的对象
//1.创建增强器
Enhancer enhancer = new Enhancer();
//2.设置父类(目标对象)
enhancer.setSuperclass(Target.class);
//3.设置回调
enhancer.setCallback(new MethodInterceptor() {
@Override
public Object intercept(Object proxy/*被代理的对象*/, Method method/*被代理的方法*/, Object[] args/*参数*/, MethodProxy methodProxy) throws Throwable {
//前置增强
advice.after();
//方法调用
Object invoke = method.invoke(target, args);
//后置增强
advice.before();
return invoke;
}
});
//4.创建代理对象
Target targetProxy = (Target) enhancer.create();
targetProxy.save();
}
}
11-08
168
09-25
2106
03-21
4720