2019-01-30

Cglib的原理

spring框架中大量的使用了代理,包括JDK动态代理和CGLIB代理,实现了接口的类使用JDK动态代理,其余的就使用Cglib来生成代理对象。

解决疑惑

  • Cglib实现代理的原理
  • Cglib执行代理对象的整个流程
  • Cglib有什么优缺点

引用

AOP(Aspect Orient Programming),作为面向对象编程的一种补充,广泛应用于处理一些具有横切性质的系统级服务,如事务管理、安全检查、缓存、对象池管理等。AOP 实现的关键就在于 AOP 框架自动创建的 AOP 代理,AOP 代理则可分为静态代理和动态代理两大类,其中静态代理是指使用 AOP 框架提供的命令进行编译,从而在编译阶段就可生成 AOP 代理类,因此也称为编译时增强;而动态代理则在运行时借助于 JDK 动态代理、CGLIB 等在内存中“临时”生成 AOP 动态代理类,因此也被称为运行时增强。

CGLIB使用的是字节码技术,动态生成类的二进制代码,然后类加载器加载。我理解的也不够深入,等熟悉了Java虚拟机再写吧。 深入Java虚拟机