溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring框架中AOP技術是什么

發(fā)布時間:2021-11-23 15:15:00 來源:億速云 閱讀:111 作者:小新 欄目:大數(shù)據

這篇文章主要介紹了Spring框架中AOP技術是什么,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

AOP并不是spring中所獨創(chuàng)的技術,因為AOP可以理解為是一種編程思想,例如OOP(面向對象編程)一樣。只是最近它才被作為一項技術真正的用于軟件開發(fā)中的。那么到底什么是AOP呢?AOP的全稱為Aspect Oriented Programing。看翻譯我們基本就可以猜出AOP的名字了,也就就是我們常常聽說的面象切面編程。我們通過下面的例子來展示AOP到底能夠解決我的方法中的什么問題?

我們在日常開發(fā)時知道,如果多個類中有相同的代碼,那么我們就要考慮抽取一個公共的抽象類或接口,將多個類中的相同的代碼提取到抽象類中去實現(xiàn),不同的邏輯放到相應的子類中去處理,這樣不但方便我們開發(fā)與維護,還遵循了軟件重構的思想。那么這樣真的能消除掉決子類中的重復代碼嗎?我們看下面的例子:

Spring框架中AOP技術是什么

Spring框架中AOP技術是什么

我們看上述的代碼UserService類中只有簡單的代碼,我們用一條輸出語句代替具體的業(yè)務邏輯,但是在我們日常開發(fā),常常需要向上述的代碼一樣,為相應的邏輯添加事物以解決一致性的問題。這時上述的代碼的弊端也就展現(xiàn)出來的,也就是業(yè)務代碼中會有大量的事物管理的代碼,并且這些代碼,我們并沒辦法法通過提取抽象類的方法解決。這時如果我們想要消除到業(yè)務邏輯里的事物代碼就要考慮使用AOP解決了。那么spring中怎么用AOP解決上述問題呢?先不要著急,我們先拋磚引玉在后面的文章中我們在看具體的解決辦法法,我們接下來了解一下spring中AOP其它方法的知識。

在spring的AOP中定義了一些基本的術語,我們下面將介紹這些術語的具體名字與作用。

  • 連接點

程序執(zhí)行的某個特定位置,也就是類的方法調用前、調用后、方法拋出異常后等。在spring中連接點只支持方法的連接點,也就是只能在類的方法調用前、調用后、方法拋出異常后等。

  • 切點

切點就也是定位特定的連接的。簡單一點的比喻就是連接點相當于數(shù)據庫的記錄,而切點就相當于查詢條件。所以,在spring中切點與連接點不是一一對應的關系,一個切點可以匹配多個連接點。

  • 增強

增強就是添加到目標類連接點上的代碼,也就是上述我們例子中的添加事物的代碼。正是因為如此,所有spring為我們提供的增強接口都是帶方位名的,例如BeforeAdvice、AfterReturningAdvice等。

  • 目標對象

也就是添加增強邏輯的目標類。

  • 引介

一種特殊的增強,它可以為類添加一些屬性和方法。即使這個類沒有實現(xiàn)某個接口,通過引介也可以動態(tài)為該類添加接口的實現(xiàn)邏輯。

  • 織入

織入就是將增強添加到目標類具體連接點的過程。AOP有三種類型的織入它們分別是:

  1. 編譯期織入

  2. 類裝載期織入

  3. 動態(tài)代理織入,在運行期為目標類添加增強生成子類的方法。

spring采用動態(tài)織入,而AspectJ采用編譯織入和類裝載期織入。

  • 代理

目標類被增強后就會生成一個新的包括增強邏輯的代理類。我們就是使用這個代理類,來完成我們橫切的邏輯。

  • 切面

切面由切點和增強組成,它即包括橫切的邏輯,也包括連接點的定義。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Spring框架中AOP技術是什么”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業(yè)資訊頻道,更多相關知識等著你來學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI