當前位置:
首頁 > 知識 > Spring Boot使用AOP

Spring Boot使用AOP

AOP的強大毋庸置疑,一個切面有5種通知,前置、後置、後置返回、後置異常、環繞。

Talk is cheap.Show U my code!

Spring Boot使用AOP

上代碼


pom.xml

Spring Boot使用AOP

pom.xml

因為個人比較喜歡Gson,所以用這個,不過實際工作中還是推薦阿里的fastjson。


前置

Controller代碼

Spring Boot使用AOP

Controller

AOP代碼

Spring Boot使用AOP

前置

頁面

Spring Boot使用AOP

頁面

日誌

Spring Boot使用AOP

日誌

在實際工作中,前置通知可以做許多事情,比如通過Session校驗用戶是否登錄,登錄的用戶是否有許可權,無狀態的請求可以校驗Token,或者通過全局ID保證介面冪等性等。

修改一下前置通知

Spring Boot使用AOP

修改後前置

日誌

Spring Boot使用AOP

日誌


後置

AOP代碼

Spring Boot使用AOP

後置

日誌

Spring Boot使用AOP

日誌


後置返回

AOP代碼

Spring Boot使用AOP

後置返回

日誌

Spring Boot使用AOP

日誌

新增一個Controller方法

Spring Boot使用AOP

Controller

頁面

Spring Boot使用AOP

頁面

日誌

Spring Boot使用AOP

後置返回

注意對比二者後置返回通知日誌的不同。

第一個請求,返回了HelloRes類,所以AOP參數為Object、HelloRes的兩個後置返回通知都執行了。

第二個請求,返回String,所以AOP只執行了參數為Object的後置返回通知。


後置異常

Controller代碼

Spring Boot使用AOP

Controller

AOP代碼

Spring Boot使用AOP

後置異常

頁面

Spring Boot使用AOP

頁面

日誌

Spring Boot使用AOP

日誌

因為發生了異常,所以後置返回通知不執行了。

新增一個Controller方法

Spring Boot使用AOP

Controller

頁面

Spring Boot使用AOP

頁面

日誌

Spring Boot使用AOP

後置異常

注意對比二者後置異常通知日誌的不同。

第一個請求,返回了空指針異常,所以AOP參數為Throwable、NullPointerException的兩個後置異常通知都執行了。

第二個請求,返回下標越界異常,所以AOP只執行了參數為Throwable的後置異常通知。

環繞

這個才最強大!

AOP代碼

Spring Boot使用AOP

環繞

頁面

Spring Boot使用AOP

頁面

注意返回的recode和restr與之前的不同,裡面的值被AOP修改了。

日誌

Spring Boot使用AOP

日誌

把Controller之前拋異常的方法修改返回值

Spring Boot使用AOP

Controller

頁面

Spring Boot使用AOP

頁面

日誌

Spring Boot使用AOP

日誌

這其實給了我們一個思路:把所有返回數據用一個通用的類封裝起來,通過環繞通知進行統一處理,這樣我們的業務開發人員就不必考慮異常處理的事情了。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Java個人學習心得 的精彩文章:

Spring Boot自定義Logback
Docker掛載主機目錄(基於Tomcat)
Docker與主機互傳文件(基於Tomcat)
Spring Cloud Feign重試
構建運行Spring Boot的Docker

TAG:Java個人學習心得 |