首页 > 其他分享 >Cglib 动态代理

Cglib 动态代理

时间:2022-12-09 08:22:27浏览次数:40  
标签:enhancer cglib getName Object 代理 Cglib import 动态 public

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

相关文章