jdk和cglib动态代理区别

  1. 目标类不同
    jdk目标类需要实现接口。
    cglib不需要。

  2. 代理类生成方式不同
    jdk内部字节码生成代理类。
    cglib使用ASM字节码生成库生成代理类。

  3. 代理类和目标类关系不同
    jdk代理类实现目标类接口,jdk无法代理目标类中static或private的方法。
    cglib 代理类继承目标类重写目标类方法,cglib无法代理目标类中static或private的方法外final修饰的目标对象或方法,无法代理。

  4. 调用目标方法方式不同
    jdk通过反射调用目标类方法。
    cglib 通过子类调用父类方式调用。

  5. 同一个类中,方法内部调用代理失效问题
    jdk在方法内部调用时,代理会失效。
    cglib在方法内部调用时,代理不会失效。
    注意:在spring中org.springframework.cglib.proxy,cglib会失效。但是net.sf.cglib.proxy包中不会失效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值