Spring 中建立通知

2021-08-09 10:58:22 字數 1206 閱讀 2204

這些通知型別,結合方法呼叫連線點,可以完成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...