对于最新稳定版本,请使用 Spring Framework 7.0.6spring-doc.cadn.net.cn

AOP 代理

Spring AOP 默认使用标准的 JDK 动态代理来创建 AOP 代理。这使得任意接口(或一组接口)都可以被代理。spring-doc.cadn.net.cn

Spring AOP 也可以使用 CGLIB 代理。当需要代理类而不是接口时,就必须使用 CGLIB。默认情况下,如果业务对象未实现任何接口,Spring 将使用 CGLIB。由于良好的编程实践是面向接口而非类进行编程,因此业务类通常会实现一个或多个业务接口。在某些(希望是罕见的)情况下,如果你需要对未在接口中声明的方法进行增强,或者需要将代理对象以具体类型的形式传递给某个方法,此时可以强制使用 CGLIBspring-doc.cadn.net.cn

重要的是要理解 Spring AOP 是基于代理的。有关这一实现细节的确切含义,请参阅 理解 AOP 代理以进行深入探讨。spring-doc.cadn.net.cn