cglib调用
cglib代理
JDK与CGlib代理对比
JDK和Cglib代理对比:
7777777777777777777777777777
AOP代理
JDK与Cglib代理对比: 1:JDK只能针对有接口的类的接口方法进行动态代理; 2:Cglib基于继承来实现代理,无法对static、final类进行代理; 3:Cglib基于继承来实现代理,无法对private、static方法进行代理。
public class DemoMethodInterceptor implements MethodInterceptor{
@Override
public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
System.out.println("before in cglib");
Object result = null;
try{
result = proxy.invokeSuper(obj, args);
}catch (Exception e){
System.out.println("get ex:"+e.getMessage());
throw e;
}finally {
System.out.println("after in cglib");
}
return result;
}
}
MethodInterCeptor
与JDK的InvocationHandler类似
用方法反射调用目标对象的方法,把真正的业务逻辑委托给目标对象
Cglib实现:
1:生成指定类对象的子类,也就是重写类中的业务函数。
2:执行回调函数,加入intercept()函数。
3:创建这个类的子类对象。
-----------------------------------------
反射技术实现; methodProxy.invokeSuper();
JDK与Cglib代理对比
jdk也无法对private方法进行代理
Cglib实现--
Cglib实现
Cglib代理实现MethodInterceptor接口
cglib代理实现MethodInterceptor接口
jdk和cglib代理区别
继承来实现代理类
看起来差别不大啊
JDK与Cglib代理对比:
1:JDK只能针对有接口的类的接口方法进行动态代理;
2:Cglib基于继承来实现代理,无法对static、final类进行代理;
3:Cglib基于继承来实现代理,无法对private、static方法进行代理。
Cglib实现:
1:生成指定类对象的子类,也就是重写类中的业务函数。
2:执行回调函数,加入intercept()函数。
3:创建这个类的子类对象。
-----------------------------------------
反射技术实现; methodProxy.invokeSuper();
jdk 与 cglib代理区别
两种代理对比:jdk也不能对private和static方法进行代理
两种代理区别
JDK:接口里面不能有private和static,所以JDK同样也不能对private和static方法进行代理
MethodInterCeptor
与JDK的InvocationHandler类似
用方法反射调用目标对象的方法,把真正的业务逻辑委托给目标对象
Cglib实现
setSuperClass()继承方法
setCallback()织入代码
JDK与Cglib代理对比
JDK cglib 代理对比
jdk与cglib代理对比
调用cglib代理