Spring AOP中的JDK跟CGLib动态代理哪个效率更高?_马会
Spring AOP中的JDK跟CGLib动态代理哪个效率更高?
更新时间:2019-03-04
 

通过实现InvocationHandlet接口创建自己的调用处理器;

JDK动态代理的话,他有一个限度,就是它只能为接口创建代理实例,而对不通过接口定义业务方式的类,如何创建动态代理实例哪?答案就是CGLib。

二、基本概念

自Java 1.3当前,Java供应了动态署理技能,允许开发者在运行期创立接口的代办实例,后来这项技巧被用到了Spring的很多地方。

1、JDK动态代理具体实现原理:

JDK动态代理主要波及java.lang.reflect包下边的两个类:Proxy和InvocationHandler。其中,InvocationHandler是一个接口,可能通过实现该接口定义横切逻辑,并通过反射机制调用目标类的代码,动态地将横切逻辑跟业务逻辑贬值在一起。

今天有小错误笔试的时候被问到:Spring AOP中JDK 和 CGLib动态代理哪个效率更高?

欢迎工作一到五年的Java工程师友人们加入Java程序员开发: 854393687

CGLib采用底层的字节码技术,全称是:Code Generation Library,CGLib可以为一个类创建一个子类,在子类中采取办法拦阻的技术拦截所有父类措施的调用并趁势织入横切逻辑。

群内供给免费的Java架构学习材料(里面有高可用、高并发、高性能及分布式、Jvm机能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个常识点的架构资料)公平利用自己每一分每一秒的时间来学习提升本人,不要再用"不时光“来掩饰自己思维上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

首先,咱们知道Spring AOP的底层实现有两种方法:一种是JDK动态代理,另一种是CGLib的方式。

通过为Proxy类指定ClassLoader对象和一组interface来创建动态代理;

三、JDK 跟 CGLib动态代理差异

一、背景