一、背景
展示 cglib 生成代理对象流程。
CGLIB 是一个常用的字节码生成器的类库。 提供的功能:生成和转换 Java 字节码。
CGLIB 可以覆盖 final 方法
技术背景:在 Java 早期,动态代理主要依赖 JDK 原生的 java.lang.reflect.Proxy,但该机制仅支持接口代理,无法直接代理普通类。CGLIB 则通过字节码生成技术(基于 ASM 框架),实现了对类的代理,弥补了 JDK 代理的局限性。
如果目标类没有实现接口,spring 会强制使用 CGLIB
代理对象和目标对象如何产生联系?
二、流程图
三、测试代码
这里的程序都是标准 bean 的生成路径,没有走org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#resolveBeforeInstantiation
中的 short-cut 路径(流程图中菱形左侧分支的自定义场景)。