SpringBoot 全局異常處理 @RestControllerAdvice +@ExceptionHandler 請求參數校驗


ControllerAdvice

指示帶注釋的類輔助“控制器”。

作為的特殊化@Component,允許通過類路徑掃描自動檢測實現類。

通常用於定義@ExceptionHandler, @InitBinder@ModelAttribute 適用於所有@RequestMapping方法的方法。

之一的annotations()basePackageClasses(), basePackages()或它的別名value() 可以被指定,以限定控制器,以協助的特定子集。當應用多個選擇器時,將應用“或”邏輯-表示選定的控制器應至少匹配一個選擇器。

默認行為(即,如果不使用任何選擇器使用),帶@ControllerAdvice注釋的類將幫助所有已知的Controller。

請注意,這些檢查是在運行時完成的,因此添加許多屬性並使用多種策略可能會帶來負面影響(復雜性,性能)。


/**
* SpringMVC統一異常處理
* 注:@ControllerAdvice為Controller層增強器,其只能處理Controller層拋出的異常;
* 由於代碼間的層級調用機制 、異常的處理機制等,所以這里處理Controller層的異常,就相當於
* 處理了全局異常
* @author
*/

@RestControllerAdvice
public class GlobalExceptionHandler {


@ExceptionHandler(MethodArgumentNotValidException.class)
public Object bindException(MethodArgumentNotValidException e) {
BindingResult bindingResult = e.getBindingResult();
StringBuilder sb=new StringBuilder();
sb.append("基礎數據校驗不通過:");
for (FieldError fieldError : bindingResult.getFieldErrors()) {
sb.append("\n");
sb.append(fieldError.getDefaultMessage());
}
Map<String,Object> result=new HashMap<>();
result.put("code","00000010");
result.put("data",sb.toString());
return result;
}

}


@Length(min = 12,message = "訂單號長度不正確")
@NotBlank(message = "訂單號不能為空")
String orderId;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM