Spring MVC 統一處理異常值AOP

2021-08-29 14:17:17 字數 1858 閱讀 6005

* 思想

下班後,站在熙熙攘攘的地鐵上,看到乙個帖子,技術和思想的重要性。一位樓主的話讓我感受很深刻:論技術和思想的重要性,他說到他的開發水平不是很高,但是他認為他所具有的思想是很不錯的,他談到對自己手下的員工的高要求,讓他們在寫出來的**不至於那樣的笨重,他說他很嚴格,但是還是有人願意跟著他,為什麼呢?因為可以收穫很多。然後開始制定介面,約束大家如何寫**。

* **分析

/**

* 根據id查詢foo

** @param id 主鍵id

* @return itooresult foo集合

* @author viola

* @since 1.0.0 2018-10-18 14:35:27

*/@apioperation(value = "根據id查詢foo", notes = "請輸入主鍵id進行查詢")

public itooresult findfoomodelbyid(@apiparam(value = "主鍵id", required = true) @pathvariable string id) catch (exception e)

return itooresult.build(itooresult.success, "查詢成功", foomodel);

}

當然上面的**大家看著已經很不錯了,大家看到經過已經是被封裝過的了。但是我們的每個方法中都要進行異常的捕獲和處理,是不是顯得很麻煩,這樣也不符合我們開發的過程中多關注業務實現。下面是優化後的**:

/**

* 根據id查詢foo

** @param id 主鍵id

* @return itooresult foo集合

* @author viola

* @since 1.0.0 2018-10-18 14:35:27

*/@apioperation(value = "根據id查詢foo", notes = "請輸入主鍵id進行查詢")

public itooresult findfoomodelbyid(@apiparam(value = "主鍵id", required = true) @pathvariable string id)

給人的感覺是不是簡單了很多,這便是乙個團隊整體素質的體現。

* @around

我的實現方式是通過橫切處理的,@around增強處理是較為強大的處理,它近似等於before和afterreturning的總和。@around既可在執行目標方法之前織入增強動作,也可在執行目標方法之後織入增強動作。@around甚至可以絕地目標方法什麼時候執行,如何執行,更甚這可以完全阻止目標方法的執行。

當定義乙個around增強處理時,需要的乙個形參必須是proceedingjopinpoint型別,在增強處理方法體內,呼叫proceedingjoinpoint的proceed方法才會執行目標方法------這就是@around增強處理可以完全控制目標方法執行時機、如何執行的關鍵;如果程式沒有呼叫proceedingjoinpoint的proceed方法,則目標方法不會執行。

如下是攔截異常的方法實現:

@aspect

public class exceptionintercept

//增強方法

@around("declarejoinpointexpression()")

public object handlecontrollermethod(proceedingjoinpoint pjp) catch (throwable var4) else }}

}

spring.xml中進行如下配置:

SpringMVC異常統一處理

正文 spring 統一異常處理有 3 種方式,分別為 使用 exceptionhandler 註解 實現 handlerexceptionresolver 介面 使用 controlleradvice 註解 package com.tao.smp.exception api統一的返回結果類 pub...

springmvc異常統一處理(一)

目錄 正文 spring 統一異常處理有 3 種方式,分別為 使用 exceptionhandler 註解 實現 handlerexceptionresolver 介面 使用 controlleradvice 註解 使用該註解有乙個不好的地方就是 進行異常處理的方法必須與出錯的方法在同乙個contr...

SpringMVC 全域性異常統一處理

使用 exceptionhandler 註解 實現 handlerexceptionresolver 介面 使用 controlleradvice 註解 當以上三個方式,一起出現時,只執行執行範圍最小的方式,後面的方式不再執行處理 執行範圍 exceptionhandler controllerad...