Spring AOP 默认使用标准 JDK 动态代理作为 AOP 代理。这 启用要代理的任何接口(或一组接口)。Spring中文文档

Spring AOP 也可以使用 CGLIB 代理。这对于代理类而不是 接口。默认情况下,如果业务对象未实现 接口。由于编程到接口而不是类是很好的做法,因此业务 类通常实现一个或多个业务接口。在那些(希望很少见)的情况下,可以强制使用 CGLIB 需要建议未在接口上声明的方法或需要声明的方法 将代理对象作为具体类型传递给方法。Spring中文文档

重要的是要掌握 Spring AOP 是基于代理的事实。请参阅了解 AOP 代理,以彻底了解这到底是什么 实现细节实际上意味着。Spring中文文档