Java动态代理与CGLIB、JDK代理的区别

原创 快来打我* 2024-09-27 08:57 104阅读 0赞

Java的动态代理主要通过java.lang.reflect.Proxy类实现,其中常用的代理库有CGLIB和JDK代理(基于接口)。

  1. CGLIB代理:

    • 由字节码生成一个真正的类。
    • 优点是不需要目标接口,透明化改造对象。
    • 缺点是生成的类在JVM中是唯一的,如果要多台机器共享,就不适用。
  2. JDK代理(基于接口):

    • 直接通过Java的反射API来创建一个代理对象,这个代理对象实际上是一个实现了目标接口的类的对象。
    • 优点是透明化操作,生成的类和目标类共享字节码,效率高。
    • 缺点是如果目标类没有实现接口,那么就需要手动实现接口。

总的来说,CGLIB适合需要透明化改造目标对象的情况,而JDK代理更适合基于接口进行功能调用的场景。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,104人围观)

还没有评论,来说两句吧...

相关阅读