Java中的子类代理和接口代理

1、JDK动态代理
java.lang.reflect.InvocationHandler 调用处理器
java.lang.reflect.Proxy 代理类的父类,是所有jdk代理类的父类
JDK代理类是接口代理,因为它继承了proxy这个类,java是单继承的
jdk代理类通过调用处理器中的invoke方法来实现动态代理的目的,
invoke签名,
public Object invoke(Object proxy,Method method,Object[] args);
proxy 代理实例,method 接口方法的Method实例,args 调用方法的参数数组
代理实例创建
Proxy.newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler handler);
loader 代理类的类加裁器,interfaces 代理类要实现的接口列表,handler 调用处理器
实现过程
1),实现一个调用处理器,这个自定义调用处理器传入一个目标对象target,在invoke方法
method.invoke(target,args);这个语句前后加入要织入的代码,比如事务、日志
2),构造代理类和代理实例,传入所需参数。调用方法。
说明:若method.invoke(proxy,args);会出现java.lang.StackOverFlowError错误,
2、cglib动态代理
cglib是子类代理,cglib性能要比jdk好,但创建代理对象时,jdk比cglib效率高,
net.sf.cglib.proxy.MethodInterceptor
net.sf.cglib.proxy.MethodProxy
net.sf.cglib.proxy.Enhancer
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值