CGLIB动态代理模式
1. 什么是CGLIB
CGLIB, Code Generation Library ,代码生成库,是一个开源项目。是一个强大的、高性能、高质量的代码生成类库。它可以在运行期扩展Java类和实现Java接口。
CGLIB 的底层是通过使用一个小而快的字节码处理框架ASM,来转换字节码并生成新的类。(该节要学到的代理类就是由ASM生成的)
2. 应用场景
GBLIB动态代理,其所要增强的目标类可以没有实现任何业务接口。当然。若目标类实现了业务接口,也可以使用CGLIB生成代理类。(而 JDK的Proxy动态代理要求目标类必须实现业务接口。)
3. 代理生成原理
CGLIB使用子类扩展父类的方式来生成代理的。即CGLIB会动态生成目标类的子类作为代理类,并创建其对象,即代理对象。
4. 使用要求
(1)目标类不能是final 的。(因为final类型没有子类。)
(2)目标类要具有无参构造器(没有无参构造器,子类将无法创建)
5. Jar 包下载
从 github 官网下载。
网址栏输入 github.com/cglib --------点击cglib ------点击releases -------- DownLoad 中下载 (其中 , 名为 cglib-nodep.x.x.x.jar 的jar包中直接包含ASM , 名为 cglib.x.x.x.jar 的 jar包不包含ASM. 若感觉带ASM的jar包中ASM版本低,想更新ASM可直接下载不包含的这一个)