AOP 代理
Spring AOP 預設使用標準的 JDK 動態代理來實現 AOP 代理。這使得任何介面(或一組介面)都可以被代理。
Spring AOP 也可以使用 CGLIB 代理。這對於代理類而不是介面是必需的。預設情況下,如果業務物件未實現介面,則使用 CGLIB。由於面向介面程式設計而不是面向類程式設計是一種良好的實踐,因此業務類通常會實現一個或多個業務介面。在那些(希望是罕見的)需要通知未在介面上宣告的方法或需要將代理物件作為具體型別傳遞給方法的情況下,可以強制使用 CGLIB。
重要的是要理解 Spring AOP 是基於代理的。有關此實現細節的確切含義的詳盡檢查,請參閱理解 AOP 代理。