0 0

JDK动态代理 CGLIB动态代理 AspectJ静态代理的区别是什么?0

我们知道JDK的动态代理是针对接口的,在运行期生成代理类。

CGLIB动态代理 是可以针对接口与普通类(继承方式),底层使用ASM框架生成字节码完成代理功能


我在网上查资料说AspectJ是静态代理 在编译期间就生成了class文件完成了代理。这点容易理解一种编译的技术。
那么我的问题是

问题一~~~
Spring的AOP为什么需要引入aspectjrt-1.6.8.jar与aspectjweaver-1.6.8.jar这两个包?如果是接口直接使用JDK的动态代理,如果是普通类则用cglib不就完了吗?这是我的第一个问题

问题二~~~
第二个问题是Spring使用aspectjrt-1.6.8.jar与aspectjweaver-1.6.8.jar包 那么是编译期代理 还是 运行期代理 求详细解释

非常感谢高手赐 教



2013年10月06日 19:04

3个答案 按时间排序 按投票排序

0 0

采纳的答案

因为spring支持AspectJ风格的AOP
还是动态的,标注中用到的JoinPoint等类都来自aspectj包

2013年10月07日 16:10
0 0

我还碰到过这个样的问题,没有包含cglib的jar包,但是还可以使用cglib 做代理呢。

疑惑中。。。

我的jar 文件如下:

2013年10月08日 15:55
0 0

JDK动态代理是模拟接口实现的方式,cglib是模拟子类继承的方式,一般采用前者,因为前者效率高。后者不建议使用,除非非用不可

2013年10月07日 08:21

相关推荐

    Java JDK代理、CGLIB、AspectJ代理分析比较

    ### Java代理技术详解:JDK代理、CGLIB与AspectJ #### 一、代理模式简介 代理模式是一种常见的设计模式,在《Design Patterns in Java》一书中对其有明确的定义:“代理模式为一个对象提供一个代理,以控制对该...

    Spring aop 之 静态代理 动态代理 Aspectj aop-config 等实现方式

    主要对Spring AOP的相关概念和简单的静态代理、动态代理以及常见的几种AOP配置方式做总结学习。主要包括:1. AOP的常见概念 2. 静态代理 3. jdk动态代理 4. Aspectj and Aspectjweaver 5. **aop-config** 6. CGLIB ...

    java动态代理(JDK和cglib)共10页.pdf.zip

    在这个主题中,我们将深入探讨JDK动态代理和CGLIB库的使用。 JDK动态代理主要依赖于`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口。Proxy类用于创建代理实例,而InvocationHandler接口...

    Spring-AOP-JDK动态代理

    5. **配置代理**:Spring会根据目标对象是否实现了接口来决定使用JDK动态代理还是CGLIB代理。如果目标对象实现了接口,Spring会选择JDK动态代理。动态代理类会继承自`java.lang.reflect.Proxy`,并实现目标对象的...

    代理模式的各种实现 (动态代理、静态代理)

    代理模式在Java中主要有两种实现方式:静态代理和动态代理,其中动态代理又分为JDK动态代理和CGlib代理。 1. 静态代理 静态代理是程序员手动创建代理类并实现与目标类相同接口的方式。在静态代理中,代理类和目标类...

    spring之AOP(动态代理)

    在Spring中,AOP主要通过两种动态代理技术实现:JDK动态代理和CGLIB动态代理。 首先,让我们详细了解一下JDK动态代理。JDK动态代理基于Java的接口实现,它适用于目标对象实现了至少一个接口的情况。在运行时,JDK...

    基于Java动态代理的AOP实现.zip

    本项目旨在通过Java的动态代理技术实现面向切面编程(AOP),涵盖了静态代理、JDK动态代理、CGLIB动态代理、AspectJ以及基于instrumentation的动态代理等多种实现方式。通过这些实现方式,可以在不修改原有代码的...

    spring_aop4.rar_Home Home_jar 转换_spring AOP jar

    JDK动态代理和CGLIB字节码生成的区别? * JDK动态代理只能对实现了接口的类生成代理,而不能针对类 * CGLIB是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法 因为是继承,所以该类或方法最好...

    cglib__jar包.zip

    - 相比Java动态代理,CGLIB更适合处理没有接口的类,而JDK动态代理则需要目标对象实现至少一个接口。 - 与AspectJ相比,CGLIB的AOP实现较为简单,但AspectJ提供了更全面的切面定义和编译时织入,而CGLIB则主要在...

    Spring学习笔记(13)----动态代理模式分析演示

    Java中提供了两种主要的实现方式:JDK动态代理和CGLIB动态代理。 1. JDK动态代理:基于接口实现,要求被代理的对象必须实现至少一个接口。Java的Proxy类和InvocationHandler接口是实现JDK动态代理的关键。Proxy类...

    (入门)什么是AOP?什么是代理模式?怎么设计日志拦截器?

    Java中,JDK的Proxy类和CGLIB库可以实现动态代理。 日志拦截器是AOP的一个常见应用场景。在Spring框架中,我们可以利用AOP和代理模式来创建日志拦截器,从而实现对程序执行过程的记录。拦截器会在方法调用前后执行...

    spring_aop_cglib的实现方式

    代理可以分为两种类型:基于接口的JDK动态代理和基于类的CGLIB代理。JDK动态代理要求目标对象实现至少一个接口,而CGLIB则不需要这个限制,它通过继承目标类来创建代理对象。 要使用CGLIB,我们并不需要单独引入...

    20190606_SpringAOP编程实现_田超凡.docx

    在本文档中,作者田超凡探讨了Spring AOP(面向切面编程)的实现,主要涉及了两种代理模式:静态代理和JDK动态代理。...无论是静态代理还是动态代理,它们都为软件设计提供了更高的灵活性和可扩展性。

    基于Spring框架的AOP与MyBatis集成项目.zip

    实现静态代理和动态代理(JDK动态代理和CGLIB动态代理)。 使用AspectJ注解和XML配置进行事务管理。 3. MyBatis集成 提供基本的CRUD操作接口和实现。 支持条件查询、分页查询等高级查询功能。 4. 数据库操作

    CGLIB和Spring framework1

    首先,Spring代理是Spring框架内置的AOP实现,主要分为JDK动态代理和CGLIB代理。JDK动态代理基于接口工作,如果目标对象实现了至少一个接口,Spring会创建该接口的一个代理类,当调用代理对象的方法时,Spring会拦截...

    JavaEE spring自动实现AOP代理

    Spring 提供了两种方式来实现AOP代理:JDK动态代理和CGLIB代理。 1. **JDK动态代理**: - JDK动态代理基于Java的接口实现,适用于目标对象实现了接口的情况。Spring会为这个接口创建一个代理类,代理类在调用真实...

    jdk机制实现面向切面编程

    - 对于不基于接口的类或者需要静态代理的情况,JDK动态代理可能无法满足需求,此时可以考虑使用CGLIB或其他第三方AOP框架。 总的来说,JDK动态代理机制提供了一种轻量级的面向切面编程实现方式,它无需额外的框架...

    Spring3注解

    AOP(Aspect Orient Programming),也就是面向方面编程,作为面向对象编程的一种补充,专门用于...而动态代理则在运行时借助于 JDK 动态代理、CGLIB 等在内存中“临时”生成 AOP 动态代理类,因此也被称为运行时增强。

    spring代理实现项目

    Spring代理的实现分为两种:JDK动态代理和CGLIB代理。JDK代理适用于目标对象实现了接口的情况,而CGLIB代理则适用于未实现接口的类。Spring会根据目标对象是否实现接口选择合适的代理方式。在项目源代码中,我们可能...

Global site tag (gtag.js) - Google Analytics