`

Spring-AOP: JDK代理和CGLIB代理

aop 
阅读更多
spring对AOP的支持
1、如果目标对象实现了接口,默认会采用JDK的动态代理机制实现AOP
2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP
3、如果目标对象没有实现接口,必须使用CGLIB生成代理,spring会自动在CGLIB和JDK动态代理之间切换

4、如何强制使用CGLIB生成代理?
    * 添加CGLIB库,SPRING_HOME/lib/cglib/*.jar
    * 在spring的配置文件中加入:
    <aop:aspectj-autoproxy proxy-target-class="true"/>

5、JDK代理和CGLIB代理的区别?
    * JDK代理只能对实现了接口的类生成代理,而不能针对类
    * CGLIB是针对类实现代理的,主要对指定的类生成一个子类,并覆盖其中的方法,

    因为是继承,所以不能使用final来修饰类或方法
    <aop:aspectj-autoproxy proxy-target-class="true"/>

参考地址:
http://dingchaoqun12.blog.163.com/blog/static/11606250420112183814112/
分享到:
评论

相关推荐

    Spring-AOP-JDK动态代理

    在Java编程领域,Spring框架是应用最广泛的轻量级开源框架之一,它提供了一系列强大的功能,包括依赖注入、面向切面编程(AOP)...在实际项目中,熟练掌握Spring AOP和JDK动态代理,能够有效地提升开发效率和软件质量。

    spring-aop.xsd

    Spring AOP通过代理模式实现这一目标,支持动态代理(基于JDK)和CGLIB代理(对于无接口的类)。 `spring-aop.xsd`包含了不同版本(2.5、3.1、3.2)的XML配置元素和属性定义,这意味着随着Spring框架的版本更新,...

    spring-aop.jar

    1. **AOP代理**:Spring AOP支持两种代理方式,即JDK动态代理和CGLIB代理。JDK代理用于实现接口的类,而CGLIB代理则用于未实现接口的类。spring-aop.jar包含了这些代理机制的相关类,如`org.springframework.aop....

    AOP之JDK动态代理和CGLib动态代理

    Spring框架是AOP实现的一个典范,它提供了两种主要的动态代理方式:JDK动态代理和CGLib动态代理。 **JDK动态代理**: JDK动态代理基于Java的反射API实现,适用于接口代理。当目标对象实现了至少一个接口时,Spring...

    spring-aop-4.2.6.RELEASE.zip

    3. **智能代理增强**:Spring AOP可以自动创建JDK动态代理或CGLIB代理,根据目标对象是否实现了接口来决定,这使得AOP能在各种情况下无缝工作。 4. **事务管理**:Spring AOP在事务管理方面有着出色的表现,可以...

    Spring框架中JDK动态代理和cglib动态代理

    Spring 框架中 JDK 动态代理和 CGLIB 动态代理是 Spring AOP 中一个非常重要的知识点。Spring AOP 框架会根据实际情况选择使用 JDK 的动态代理还是 CGLIB 的动态代理。 JDK 动态代理是 Java 自带的动态代理机制,它...

    spring-aop-4.0.0.RELEASE

    - **代理模式**:Spring AOP通过两种代理方式实现,即JDK动态代理和CGLIB代理。前者适用于接口实现类,后者适用于无接口的类。 - **注解驱动**:从4.0.0.RELEASE开始,Spring AOP支持完全基于注解的配置,大大...

    spring-cglib-repack-3.2.5.jar,spring-objenesis-repack-2.6.jar

    标题中的"spring-cglib-repack-3.2.5.jar"和"spring-objenesis-repack-2.6.jar"是Spring框架在运行时依赖的两个关键库,它们主要涉及到动态代理和对象创建的优化。 1. **CGLIB(Code Generation Library)**: ...

    day39 07-Spring的AOP:自动代理

    在Spring中,有两种主要的代理方式:JDK动态代理和CGLIB代理。JDK动态代理基于Java的反射API实现,适用于实现了接口的目标对象;而CGLIB代理则是在运行时动态生成一个目标类的子类,适用于未实现接口的类。 自动...

    spring4.3.9jar包.zip

    (jdk1.8和spring4)\cglib-2.2.2.jar, 287192 , 2019-03-06 (jdk1.8和spring4)\commons-dbcp-1.2.2.jar, 121757 , 2019-03-06 (jdk1.8和spring4)\commons-logging-1.1.1.jar, 60686 , 2019-03-06 (jdk1.8和...

    spring-cglib-repack-3.2.4.jar和spring-objenesis-repack-2.5.1.jar

    在实际开发中,`spring-cglib-repack-3.2.4.jar`和`spring-objenesis-repack-2.5.1.jar`是Spring框架运行的必要组件,特别是对于那些使用AOP特性的项目。确保这两个jar包的正确引入,能有效避免因缺少依赖而导致的...

    spring-aop源码解读

    Spring支持两种类型的代理:JDK动态代理和CGLIB代理。JDK代理用于实现接口的对象,而CGLIB代理则用于不实现接口的类。ProxyFactoryBean是Spring AOP用于创建代理对象的主要工具,它实现了BeanFactoryAware、...

    Spring-Aop所有jar

    在Spring框架中,AOP通过代理模式实现,可以是JDK动态代理或者CGLIB代理。 首先,我们需要理解AOP的基本概念。切面(Aspect)是包含关注点的模块化单元,它封装了跨越多个对象的行为或责任。通知(Advice)是切面在...

    Spring源码缺失的spring-cglib-repack-3.2.6.jar和spring-objenesis-repack-2.6.jar

    在Spring AOP中,有两种主要的代理方式:JDK动态代理和CGLib代理。JDK动态代理基于接口,如果目标对象实现了至少一个接口,Spring会使用JDK的Proxy类生成一个代理对象。而如果没有接口或者接口方法不能满足需求,...

    spring-aop。以及把代理类 文件输出

    在Java 1.8环境下,Spring AOP支持两种类型的代理:JDK动态代理和CGLIB代理。JDK动态代理适用于实现了接口的类,而CGLIB代理则适用于没有实现接口的类。在本项目中,可能使用了JDK动态代理,因为描述中提到了"需要...

    spring-aop:一个spring aop测试项目

    默认情况下,Spring使用JDK动态代理,但如果目标对象实现了接口,就会使用CGLIB代理。 6. **AspectJ集成**:虽然Spring AOP已经很强大,但AspectJ提供了更强大的切入点表达式和类型匹配功能。在某些复杂场景下,...

    spring-aop

    2. **org.springframework.aop.framework**:这个包包含了AOP的代理实现,包括JDK动态代理和CGLIB代理。JDK代理用于实现接口的类,而CGLIB代理则用于没有实现接口但需要进行AOP处理的类。Spring会根据目标对象是否...

    aopalliance-1.0、aspectjweaver-1.8.10、spring-aop-4.3.6.RELEASE、spring-aspects-4.3

    与AspectJ不同,Spring AOP默认使用代理模式(如JDK动态代理或CGLIB),但在配置后也能与AspectJ结合使用,利用AspectJ Weaver进行更强大的字节码织入。 最后,spring-aspects-4.3.6.RELEASE是Spring框架的另一个...

    spring-aop AND proxy

    “proxy”则指的是代理,在Spring AOP中,主要有两种代理方式:JDK动态代理和CGLIB代理。JDK动态代理是基于接口的,当目标对象实现了接口时,Spring会创建一个实现了相同接口的代理类。而CGLIB代理则是基于字节码...

Global site tag (gtag.js) - Google Analytics