美文网首页BATJ架构
Spring AOP中的动态代理:JDK动态代理和CGLIB动态

Spring AOP中的动态代理:JDK动态代理和CGLIB动态

作者: 裘马轻狂大帅 | 来源:发表于2020-07-06 07:45 被阅读0次

静态代理模式

 所谓静态代理就是AOP框架会在编译阶段生成AOP代理类,因此也称为编译时增强。ApsectJ是静态代理的实现之一,也是最为流行的。静态代理由于在编译时就生成了代理类,效率相比动态代理要高一些。AspectJ可以单独使用,也可以和Spring结合使用。

动态代理模式

 与静态代理不同,动态代理就是说AOP框架不会去修改编译时生成的字节码,而是在运行时在内存中生成一个AOP代理对象,这个AOP对象包含了目标对象的全部方法,并且在特定的切点做了增强处理,并回调原对象的方法。

 Spring AOP中的动态代理主要有两种方式:JDK动态代理和CGLIB动态代理。

 JDK代理通过反射来处理被代理的类,并且要求被代理类必须实现一个接口。核心类是 InvocationHandler接口 和 Proxy类。

 而当目标类没有实现接口时,Spring AOP框架会使用CGLIB来动态代理目标类。

 CGLIB(Code Generation Library),是一个代码生成的类库,可以在运行时动态的生成某个类的子类。CGLIB是通过继承的方式做的动态代理,因此如果某个类被标记为final,那么它是无法使用CGLIB做动态代理的。核心类是 MethodInterceptor 接口和Enhancer 类。

相关文章

  • java动态代理

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

  • JDK动态代理和CGLIB动态代理的区别

    Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理: JDK动态代理只提供接口的代...

  • Spring AOP

    Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理。JDK动态代理通过反射来接收被...

  • Spring AOP中的动态代理

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

  • 2018-10-03

    Spring aop 是通过代理实现的,代理有静态代理,jdk动态代理和cglib动态代理,代理就像我们生活中的房...

  • Spring AOP

    本文主要是解析Spring AOP的运作流程。上次讲到Java中的两种动态代理技术:JDK动态代理和CGLIB动态...

  • 说说 Spring AOP 的底层实现技术(JDK 与 CGLi

    Spring AOP 使用了两种代理机制: 基于 JDK 的动态代理(接口代理)。 基于 CGLib 的动态代理(...

  • Spring之使用XML配置Spring AOP

    1.aop的原理 Spring AOP底层主要使用了JDK动态代理和cglib动态代理。具体可看文章设计模式之代理...

  • Spring Boot 2.5.x能支持Java 17了 - c

    在 Spring Framework 中,AOP 代理是 JDK 动态代理或 CGLIB 代理。 ASM 是 Ja...

  • spring

    AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理。JDK动态代理通过反射来接收被代理的类,并且...

网友评论

    本文标题:Spring AOP中的动态代理:JDK动态代理和CGLIB动态

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