美文网首页
静态代理与动态代理, jdk与cglib区别

静态代理与动态代理, jdk与cglib区别

作者: 光小月 | 来源:发表于2019-10-24 22:34 被阅读0次

https://github.com/rainbowda/learnWay/blob/master/learnBase/src/main/java/com/learnBase/proxy/README.md

静态代理
优点:可以在不修改目标对象的前提下扩展目标对象的功能。
缺点:
冗余。由于代理对象要实现与目标对象一致的接口,会产生过多的代理类。

动态代理

静态代理与动态代理的区别主要在:

静态代理在编译时就已经实现,编译完成后代理类是一个实际的class文件
动态代理是在运行时动态生成的,即编译完成后没有实际的class文件,而是在运行时动态生成类字节码,并加载到JVM中

SpringAOP会优先选择JDK动态代理,当调用方法不是接口方法时,就只能选择Cglib了

一、为什么不直接都使用JDK动态代理: JDK动态代理只能代理接口类,所以很多人设计架构的时候会使用 XxxService, XxxServiceImpl的形式设计,一是让接口和实现分离,二是也有助于代理。

二、为什么不都使用Cgilb代理: 因为JDK动态代理不依赖其他包,Cglib需要导入ASM包,对于简单的有接口的代理使用JDK动态代理可以少导入一个包。 cglib无法代理final方法。

相关文章

  • 编程常用的设计模式

    动态代理和静态代理 静态代理 动态代理 静态代理与动态代理的区别 JDK中的动态代理和CGLIB 实现动态代理的方...

  • java动态代理

    目录: 简介 jdk动态代理 cglib动态代理 jdk动态代理与cglib的区别 应用spring的aop 简介...

  • Spring AOP中的动态代理

    Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理: (3)静态代理与动态代理区别...

  • Java面试之Java基础下册(含答案)

    15.动态代理与cglib实现的区别。 动态代理有两种实现方式,分别是:jdk动态代理和cglib动态代理 jdk...

  • java代理笔记:静态代理、JDK动态代理、CGlib动态代理

    1.静态代理 JDK动态代理 CGlib动态代理

  • SpringBoot动态代理配置说明

    SpringBoot动态代理配置说明 基于CGLIB的代理与基于JDK的动态代理实现的声明式事务的区别 CGLIB...

  • AOP底层实现:cglib动态代理

    一.与JDK动态代理的区别: jdk动态代理:基于接口,实现接口中相同的方法去实现的;cglib动态代理:父子继承...

  • 瓴岳科技

    Spring中的HandlerInterceptor 是否有了解 cglib动态代理与JDK动态代理的区别 联合索...

  • 代理模式

    今天特意将静态代理、JDK动态代理、CGLIB动态代理 和 String AOP整理如下,与各位看客分享下。 1....

  • 动态代理的两种方式

    静态代理就不说了,基本用到的都是动态代理。 Java中动态代理有JDK动态代理和CGLIB动态代理。 JDK代理的...

网友评论

      本文标题:静态代理与动态代理, jdk与cglib区别

      本文链接:https://www.haomeiwen.com/subject/cawuuctx.html