AOP 代理

Spring AOP 預設使用標準 JDK 動態代理作為 AOP 代理。這使任何介面(或介面集)都能被代理。

Spring AOP 也可以使用 CGLIB 代理。這對於代理類別而非介面是必要的。依預設,如果業務物件未實作介面,則會使用 CGLIB。由於程式設計的最佳實務是針對介面而非類別進行程式設計,因此業務類別通常會實作一個或多個業務介面。在您需要建議未在介面上宣告的方法,或需要將代理物件作為具體類型傳遞給方法(在希望罕見的情況下)時,可以強制使用 CGLIB

務必掌握 Spring AOP 是基於代理的事實。請參閱了解 AOP 代理,以徹底檢查此實作細節的實際含義。