Spring AOP 基于 JDK 动态代理和 CGLIB 代理时分别有什么前提条件
进阶版来源:alibaba初级工程师
草稿
答案解析
Spring AOP 使用 JDK 动态代理和 CGLIB 代理时,前提条件不太一样。
JDK 动态代理的前提是目标类必须实现接口。
它是基于 java.lang.reflect.Proxy 生成代理对象的,代理对象本质上是实现了目标对象相同接口的一个代理类,所以 Spring 只能通过接口方法来织入增强逻辑。
比如:
这种情况下,Spring 默认可以使用 JDK 动态代理。需要注意的是,如果方法没有定义在接口里,而只是实现类自己的方法,那么通过 JDK 动态代理通常是代理不到的。
CGLIB 代理的前提是目标类可以被继承。
CGLIB 是通过生成目标类的子类来实现代理的,所以目标类不能是 `f
登录后查看完整内容
