Spring AOP 的实现原理(面试高频)
-
目标类实现了接口,Spring 底层优先使用 jdk 动态代理,生成目标类的代理,进而实现功能扩展。
-
目标类没有实现接口,则自动使用CGLib 通过继承的方式对目标类进行扩展。
目标类没有实现接口

CGLib 自动生成的代理类(通过继承重写父类方法,补充拓展功能+父类原有功能)
当“目标类”没有实现接口的情况下,需要通过CGLib(Code Generation Library)组件实现功能扩展

实现接口的 目标类,通过JDK 动态代理方式实现功能扩展
