CGLIB

Summary::强大高性能的代码生成库。被广泛应用于 AOP 框架
CGLIB 是一个强大的、高性能的代码生成库。其被广泛应用于 AOP 框架(Spring、dynaopaop)中,用以提供方法拦截操作

为什么使用 CGLIB

CGLIB 代理主要通过对字节码的操作,为对象引入间接级别,以控制对象的访问。我们知道 Java 中有一个动态代理也是做这个事情的,那我们为什么不直接使用 Java 动态代理,而要使用 CGLIB 呢?答案是 CGLIB 相比于 JDK 动态代理更加强大,JDK 动态代理虽然简单易用,但是其有一个致命缺陷是,只能对接口进行代理。如果要代理的类为一个普通类、没有接口,那么 Java 动态代理就没法使用了。200-CGLIB(Code Generation Library) 详解 - CSDN 博客@annote#^sran-1717417057004

CGLIB结构

CGLIB 底层使用了 ASM(一个短小精悍的字节码操作框架)来操作字节码生成新的类。除了 CGLIB 库外,脚本语言(如 Groovy 何 BeanShell)也使用 ASM 生成字节码。ASM 使用类似 SAX 的解析器来实现高性能

原理

Cglib是针对类来实现代理的,他的原理是对代理的目标类生成一个子类,并覆盖其中方法实现增强,因为底层是基于创建被代理类的一个子类,所以它避免了JDK动态代理类的缺陷。

注意