上一题下一题

Spring AOP 基于 JDK 动态代理和 CGLIB 代理时分别有什么前提条件

进阶版
来源:alibaba初级工程师
草稿该题目为草稿状态,前台公开题库中不可见。
答案解析

Spring AOP 使用 JDK 动态代理和 CGLIB 代理时,前提条件不太一样。

JDK 动态代理的前提是目标类必须实现接口。

它是基于 java.lang.reflect.Proxy 生成代理对象的,代理对象本质上是实现了目标对象相同接口的一个代理类,所以 Spring 只能通过接口方法来织入增强逻辑。

比如:

这种情况下,Spring 默认可以使用 JDK 动态代理。需要注意的是,如果方法没有定义在接口里,而只是实现类自己的方法,那么通过 JDK 动态代理通常是代理不到的。

CGLIB 代理的前提是目标类可以被继承。

CGLIB 是通过生成目标类的子类来实现代理的,所以目标类不能是 `f

登录后查看完整内容