AOP Proxies

Spring AOP 默认使用标准 JDK 动态代理进行 AOP 代理。这使任何界面(或一组界面)都可以被代理。

Spring AOP 还可以使用 CGLIB 代理。这是代理类而非界面的必要条件。默认情况下,如果业务对象未实现一个界面,则使用 CGLIB。由于根据界面而非类进行编程是一种好习惯,因此业务类通常实现一个或多个业务界面。在这些(希望很少见)情况下,你可以强制使用 CGLIB,比如你需要对未在界面上声明的方法进行切面处理,或需要以具体类型将代理对象作为参数传递给方法。

务必要掌握 Spring AOP 基于代理的事实。有关此实现详细信息的实际含义,请参阅 Understanding AOP Proxies 进行深入了解。