1 切入點表示式
1.1 作用
通過表示式的方式定位乙個或多個具體的連線點。
1.2 語法細節
①切入點表示式的語法格式
execution([許可權修飾符] [返回值型別] [簡單類名/全類名] [方法名]([引數列表]))
②舉例說明
表示式execution(*com.atguigu.spring.arithmeticcalculator.*(..))
含義arithmeticcalculator介面中宣告的所有方法。
com.atguigu.spring.arithmeticcalculator.*(..)表示目標方法的簽名。
第乙個「*」代表任意修飾符及任意返回值。
第二個「*」代表任意方法。
「..」匹配任意數量、任意型別的引數。
若目標類、介面與該切面類在同乙個包中可以省略包名。
表示式execution(public* arithmeticcalculator.*(..))
含義arithmeticcalculator介面的所有公有方法
表示式execution(publicdoublearithmeticcalculator.*(..))
含義arithmeticcalculator介面中返回double型別數值的方法
表示式execution(public double arithmeticcalculator.*(double, ..))
含義第乙個引數為double型別的方法。
「..」 匹配任意數量、任意型別的引數。
表示式execution(public double arithmeticcalculator.*(double,double))
含義引數型別為double,double型別的方法
③在aspectj中,切入點表示式可以通過 「&&」、「||」、「!」等操作符結合起來。
表示式execution (* *.add(int,..))||execution(* *.sub(int,..))
含義任意類中第乙個引數為int型別的add方法或sub方法
1.3 切入點表示式應用到實際的切面類中
2 當前連線點細節
2.1 概述
切入點表示式通常都會是從巨集觀上定位一組方法,和具體某個通知的註解結合起來就能夠確定對應的連線點。那麼就乙個具體的連線點而言,我們可能會關心這個連線點的一些具體資訊,例如:當前連線點所在方法的方法名、當前傳入的引數值等等。這些資訊都封裝在joinpoint介面的例項物件中。
3 重用切入點定義
[1] 在編寫aspectj切面時,可以直接在通知註解中書寫切入點表示式。但同乙個切點表示式可能會在多個通知中重複出現。
[2] 在aspectj切面中,可以通過@pointcut註解將乙個切入點宣告成簡單的方法。切入點的方法體通常是空的,因為將切入點定義與應用程式邏輯混在一起是不合理的。
[3] 切入點方法的訪問控制符同時也控制著這個切入點的可見性。如果切入點要在多個切面中共用,最好將它們集中在乙個公共的類中。在這種情況下,它們必須被宣告為public。在引入這個切入點時,必須將類名也包括在內。如果類沒有與這個切面放在同乙個包中,還必須包含包名。
[4]其他通知可以通過方法名稱引入該切入點
Spring面向切面程式設計AOP
感謝zejian 大佬的分享 關於 spring aop aspectj 你該知曉的一切 大佬的分享讓我受益匪淺!首先學習aop前,弄清楚為什麼要使用aop?舉個栗子有助於理解 乙個支付轉賬的小栗子 我們每次使用手機支付時,不管轉賬還是支付都需要驗證支付資訊密碼。這時aop的好處就體現出來了,我們可...
Spring基礎 AOP程式設計 2
size x large b 基於proxyfactory的aop程式設計 b size spring只支援方法連線點,包括了5種型別的增強。list 前置增強 後置增強 環繞增強 異常丟擲增強 引介增強 list 1.前置異常 這裡使用乙個服務員作為例子,服務員向顧客打招呼,並且提供服務。首先我們...
Spring 切面程式設計AOP註解
aop aspect oriented programming 切面程式設計通過預編譯方式和執行期動態 實現程式功能的統一維護的一種技術,是spring框架中乙個重點內容也是函式式程式設計的一種衍生范型。在spring中使用aop的業務只需要關注自己業務本身,將日誌記錄 效能統計 安全控制 事務處理...