這些通知型別,結合方法呼叫連線點,可以完成90%的aop工作,對於剩下的不常用的10%,我們可以依賴
aspectj來做。
aspectj是什麼東西?沒用過。。。
前置通知
介面:org.springframework.aop.methodbeforeadvice
說明:使用前置通知可以在連線點執行前進行自定義的操作。
不過,spring裡只有一種連線點,即方法呼叫,所以前置通知事實上就是讓你能在方法呼叫前進行一些操作。前置通知可以訪問呼叫的目標方法,也可以對該方法的引數進行操作,不過它不能影響方法呼叫本身。
後置通知
介面:org.springframework.aop.afterreturningadvice
說明:後置通知中不能修改方法返回值,雖然不能修改返回值,但我們可以丟擲乙個異常,這樣呼叫方法就只能看到這個異常而不是返回值了。(對於返回值不正確的情況下)
包圍通知
介面:org.springframework.aop.methodinterceptor
說明:spring中的包圍通知根據aop聯盟的方法***標準建模。包圍通知可以在目標方法之前和之後執行,我們也可以定義在什麼時候呼叫目標方法。如果需要,我們也可以另寫自己的邏輯而完全不呼叫目標方法。
包圍通知可以修改方法的返回值
丟擲通知
介面:org.springframework.aop.throwsadvice
說明:丟擲通知僅當方法呼叫丟擲乙個異常的時候才被呼叫,它在目標方法呼叫返回時才被執行。丟擲通知可以只捕獲特定的異常,我們可以訪問丟擲異常的方法,傳入呼叫的引數以及呼叫的目標方法。
引入
介面:org.springframework.aop.introductioninterceptor
說明:spring將引入看成乙個特殊的***。
使用引入***,我們可以定義通知引入的方法的實現。
spring 建立環繞通知
package ch2.test public inte ce performance package ch2.test import org.aspectj.lang.proceedingjoinpoint import org.aspectj.lang.annotation.aspect imp...
Spring中的環繞通知
環繞通知 問題 當我們配置了環繞通知之後,切入點方法沒有執行,而通知方法執行了 分析 通過對比動態 的環繞通知 發現動態 的環繞通知有明確的切入點方法呼叫.而我們的沒有,需要呼叫切入點方法去執行。解決 spring框架為我們提供了乙個介面,proceedingjoinpoint.該介面有乙個方法pr...
Spring 後置通知
spring 的後置通知雖然如其名字那樣,通知在方法呼叫之後織入。但準確的說,通知是在方法返回值之後和方法返回到呼叫地點之前被織入。我們可以通過spring 自帶的afterreturningadvice 介面輕鬆的實現方法的織入。afterreturningadvice 介面提供了afterret...