AOP 代理
Spring AOP 默认使用标准 JDK 动态代理来创建 AOP 代理。这使得任何接口(或一组接口)都可以被代理。
Spring AOP 还可以使用 CGLIB 代理。这是为了代理类而不是接口。默认情况下,如果业务对象不实现接口,则使用 CGLIB。由于编程时最好面向接口而不是类,因此业务类通常实现一个或多个业务接口。在那些(希望是少数)需要建议一个未在接口上声明的方法或需要将代理对象作为具体类型传递给方法的情况下,可以 强制使用 CGLIB。
重要的是要理解 Spring AOP 是基于代理的。请参阅 Understanding AOP Proxies,以深入了解这个实现细节究竟意味着什么。