上一题下一题

Spring AOP默认选择JDK代理还是CGLIB的判断依据

进阶版
来源:tencent中级工程师
答案解析

Spring AOP 选择 JDK 动态代理还是 CGLIB,核心判断依据是: 目标类是否实现了接口,以及是否强制使用类代理 。

默认情况下,在 Spring Framework 里:

如果目标对象 实现了接口 ,Spring AOP 默认使用 JDK 动态代理 。 如果目标对象 没有实现接口 ,Spring AOP 会使用 CGLIB 代理 。

因为 JDK 动态代理是基于接口生成代理对象的,它要求目标类至少实现一个接口;而 CGLIB 是通过继承目标类生成子类代理,所以不要求目标类实现接口。

可以通过配置强制使用 CGLIB,例如:

或者 XML 配置:

在 Spring Boot 中也可以配置:

```properties spring.aop.proxy target class=

登录后查看完整内容