`

spring对AOP的代理支持——JDK动态代理和CGLIB字节码生成

阅读更多
spring对AOP的代理支持——JDK动态代理和CGLIB字节码生成
2010-01-27 15:02

spring对AOP的代理支持
1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP
2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP
3、如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换

如何强制使用CGLIB实现AOP?
* 添加CGLIB库,SPRING_HOME/cglib/*.jar
* 在spring配置文件中加入<aop:aspectj-autoproxy proxy-target-class="true"/> //默认是false,即且jdk动态代理

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

实际开发中,推荐用默认的jdk动态代理

 

分享到:
评论

相关推荐

    spring_aop4.rar_Home Home_jar 转换_spring AOP jar

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

    基于java的企业级应用开发:JDK动态代理.ppt

    CGLIB代理 CGLIB(Code Generation Library)是一个高性能开源的代码生成包,它采用非常底层的字节码技术,对指定的目标类生成一个子类,并对子类进行增强。 如果想代理没有实现接口的类,那么可以使用CGLIB代理。 ...

    cglib.jar下载

    CGLIB底层:使用字节码处理框架ASM,来转换字节码并生成新的类。不鼓励直接使用ASM,因为它要求你必须对JVM内部结构包括class文件的格式和指令集都很熟悉。 CGLIB缺点:对于final方法,无法进行代理。 三、CGLIB的...

    Spring AOP与动态代理

    Spring AOP使用的动态代理,所谓的动态代理就是说AOP框架不会去修改字节码,而是在内存中临时为方法生成一个AOP对象,这个AOP对象包含了目标对象的全部方法,并且在特定的切点做了增强处理,并回调原对象的方法。...

    cglib必须导入的包和案例

    Cglib代理,也叫作子类代理,它是在内存中...Cglib包的底层是通过使用一个小而块的字节码处理框架ASM来转换字节码并生成新的类.不鼓励直接使用ASM,因为它要求你必须对JVM内部结构包括class文件的格式和指令集都很熟悉.

    spring5系列 任小龙大神班

    STS工具、IoC、DI思想、Spring测试框架、bean的实例化、作用域、初始化、生命周期、静态代理、字节码加载原理、JDK动态代理和原理、CGLIB动态代理和原理、拦截器思想、AOP思想和开发、Spring对持久层技术支持、...

    Spring.3.x企业应用开发实战(完整版).part2

    13.5 Spring对JDK 5.0 Executor的支持 13.5.1 了解JDK 5.0的Executor 13.5.2 Spring对Executor所提供的抽象 13.6 实际应用中的任务调度 13.6.1 如何产生任务 13.6.2 任务调度对应用程序集群的影响 13.6.3 任务调度云...

    Spring3.x企业应用开发实战(完整版) part1

    13.5 Spring对JDK 5.0 Executor的支持 13.5.1 了解JDK 5.0的Executor 13.5.2 Spring对Executor所提供的抽象 13.6 实际应用中的任务调度 13.6.1 如何产生任务 13.6.2 任务调度对应用程序集群的影响 13.6.3 任务调度云...

    web项目常用jar包及说明.zip

    6.cglib-nodep-2.1_3.jar(支持cglib动态代理的包) 如果用BasicDataSource来配置数据库连接,还要加入2个包: 7.commons-pool.jar 8.commons-dbcp.jar Hibernate需要的jar包: 1.hibernate3.jar(hibernate的核心...

    SSH 框架所需JAR包

    6.cglib-nodep-2.1_3.jar(支持cglib动态代理的包) 如果用BasicDataSource来配置数据库连接,还要加入2个包: 7.commons-pool.jar 8.commons-dbcp.jar Hibernate需要的jar包: 1.hibernate3.jar(hibernate的核心jar...

    SSH 项目 整合jar包

    6.cglib-nodep-2.1_3.jar(支持cglib动态代理的包) 如果用BasicDataSource来配置数据库连接,还要加入2个包: 7.commons-pool.jar 8.commons-dbcp.jar 三、Hibernate需要的jar包: 1.hibernate3.jar(hibernate的...

    Java.lang.Instrument 代理Agent使用

    在 类的字节码载入JVM前 会调用ClassFileTransformer的transform方法,从而实现修改原类方法的功能,实现AOP,这个的好处是 不会像动态代理或者CGLIB技术实现AOP那样会产生一个新类,也不需要原类要有接口 。...

Global site tag (gtag.js) - Google Analytics