6.1、什麼是 AOP?
AOP(Aspect-Oriented Programming), 即 面向切面編程, 它與
OOP( Object-Oriented Programming, 面向對象編程) 相輔相成, 提供了與 OOP 不同的抽象軟件結構的視角. 在 OOP 中, 我們以類(class)作爲我們的基 本單元, 而 AOP 中的基本單元是 Aspect(切面)
6.7、AOP 有哪些實現方式?
靜態代理
指使用 AOP 框架提供的命令進行編譯,從而在編譯階段就可生成 AOP 代理類, 因此也稱爲編譯時增強;
編譯時編織(特殊編譯器實現)
類加載時編織(特殊的類加載器實現)。
動態代理
在運行時在內存中“臨時”生成 AOP 動態代理類,因此也被稱爲運行時增強。
JDK 動態代理 CGLIB
6.8、Spring AOP and AspectJ AOP 有什麼區別?
Spring AOP 基於動態代理方式實現;AspectJ 基於靜態代理方式實現。Spring AOP 僅支持方法級別的 PointCut;提供了完全的 AOP 支持,它還支持屬性級 別的 PointCut。
6.9、如何理解 Spring 中的代理?
將 Advice 應用於目標對象後創建的對象稱爲代理。在客戶端對象的情況下,目 標對象和代理對象是相同的。
Advice + Target Object = Proxy
6.10、什麼是編織(Weaving)?
爲了創建一個 advice 對象而鏈接一個 aspect 和其它應用類型或對象,稱爲編 織(Weaving)。在 Spring AOP 中,編織在運行時執行。