更新時間:2022-12-15 16:37:18 來源:動力節點 瀏覽1227次
AOP是一種編程思想,是通過預編譯方式和運行期動態代理的方式實現不修改源代碼的情況下給程序動態統一添加功能的技術。面向對象編程將程序抽象成各個層次的對象,而面向切面編程是將程序抽象成各個切面。所謂切面,相當于應用對象間的橫切點,我們可以將其單獨抽象為單獨的模塊。
AOP技術利用一種稱為“橫切”的技術,剖解開封裝對象的內部,將影響多個類的公共行為封裝到一個可重用的模塊中,并將其命名為切面。所謂的切面,簡單來說就是與業務無關,卻為業務模塊所共同調用的邏輯,將其封裝起來便于減少系統的重復代碼,降低模塊的耦合度,有利用未來的可操作性和可維護性。
利用AOP可以對業務邏輯各個部分進行隔離,從而使業務邏輯各部分之間的耦合度降低,提高程序的可重用性,同時提高開發效率。
AOP可以有多種實現方式,而Spring AOP支持如下兩種實現方式。
JDK動態代理:這是Java提供的動態代理技術,可以在運行時創建接口的代理實例。Spring AOP默認采用這種方式,在接口的代理實例中織入代碼。
CGLib動態代理:采用底層的字節碼技術,在運行時創建子類代理的實例。當目標對象不存在接口時,Spring AOP就會采用這種方式,在子類實例中織入代碼。加分回答 在應用場景方面,Spring AOP為IoC的使用提供了更多的便利,一方面,應用可以直接使用AOP的功能,設計應用的橫切關注點,把跨越應用程序多個模塊的功能抽象出來,并通過簡單的AOP的使用,靈活地編制到模塊中,比如可以通過AOP實現應用程序中的日志功能。
另一方面,在Spring內部,例如事務處理之類的一些支持模塊也是通過Spring AOP來實現的。
AOP不能增強的類:1. Spring AOP只能對IoC容器中的Bean進行增強,對于不受容器管理的對象不能增強。2. 由于CGLib采用動態創建子類的方式生成代理對象,所以不能對final修飾的類進行代理。
以上就是“aop面試題:你對AOP有這什么樣的解讀呢”,你能回答上來嗎?如果想要了解更多的Java面試題相關內容,可以關注動力節點Java官網。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習