cglib与jdk的Proxy动态代理的区别
jdk:目标类必须实现接口
cglib:代理类继承了目标类
public class Cglib implements MethodInterceptor {
@Override
/*
* o :代理类对象,this
* method :目标类方法
* objects :方法形参数组
* methodProxy :代理类方法
* */
public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
//调用父类(目标类)方法
System.out.println("nihao");
Object invokeSuper = methodProxy.invokeSuper(o, objects);
System.out.println("mck");
return invokeSuper;
}
public Object createProxy(Class target){
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(target);
enhancer.setCallback(this);
return enhancer.create();
}
}
依赖:
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.3.0</version>
</dependency>

文章介绍了Cglib和JDK动态代理的不同之处,Cglib通过继承目标类创建代理,而JDK要求目标类必须实现接口。示例代码展示了如何使用Cglib的Enhancer和MethodInterceptor来创建代理对象并拦截方法调用。
755

被折叠的 条评论
为什么被折叠?



