AOP 代理
Spring AOP 預設使用標準的 JDK 動態代理來建立 AOP 代理。這使得任何介面(或一組介面)都可以被代理。
Spring AOP 也可以使用 CGLIB 代理。這對於代理類而非介面是必需的。預設情況下,如果業務物件未實現介面,則使用 CGLIB。由於面向介面程式設計是良好的實踐,業務類通常會實現一個或多個業務介面。在那些(希望是極少數的)你需要對未在介面中宣告的方法進行通知,或者需要將代理物件作為具體型別傳遞給方法的情況下,可以強制使用 CGLIB。
理解 Spring AOP 是基於代理的這一點非常重要。請參閱理解 AOP 代理,以詳細瞭解這一實現細節到底意味著什麼。