AOP 代理

Spring AOP 默认使用标准的 JDK 动态代理来创建 AOP 代理。这使得任何接口(或一组接口)都可以被代理。

Spring AOP 也可以使用 CGLIB 代理。这对于代理类而非接口是必需的。默认情况下,如果业务对象未实现接口,则使用 CGLIB。由于面向接口编程是良好的实践,业务类通常会实现一个或多个业务接口。在那些(希望是极少数的)你需要对未在接口中声明的方法进行通知,或者需要将代理对象作为具体类型传递给方法的情况下,可以强制使用 CGLIB

理解 Spring AOP 是基于代理的这一点非常重要。请参阅理解 AOP 代理,以详细了解这一实现细节到底意味着什么。