spring boot--全域性異常監聽
阿新 • • 發佈:2021-08-19
前言
在閱讀這篇文章之前,你可能需要對spring boot 的攔截器和過濾器進行一些瞭解,這篇文章是我見過最好的:spring boot攔截器(filter)和過濾器(interceptor)詳解及使用場景
程式碼
定義全域性異常處理類
@RestControllerAdvice //此註解用於定義@ExceptionHandler,@InitBinder和@ModelAttribute方法 public class ErrorHandler { @ExceptionHandler(value = {Exception.class}) //ExceptionHandler註解,宣告此方法為全域性異常處理函式public Object exceptionHandler(HttpServletRequest request, Exception e) { return "我還是執行了嗎?異常捕捉程式"; } }
描述
@RestControllerAdvice 是什麼
@RestControllerAdvice是一個組合註解,由@ControllerAdvice、@ResponseBody組成,而@ControllerAdvice繼承了@Component,因此@RestControllerAdvice本質上是個Component,用於定義@ExceptionHandler,@InitBinder和@ModelAttribute
@RestControllerAdvice的特點:
- @ControllerAdvice註解可以將對於控制器的全域性配置放在同一個位置。
- @RestControllerAdvice註解的類的方法可以使用@ExceptionHandler、@InitBinder、@ModelAttribute註解到方法上。
- @RestControllerAdvice註解將作用在所有註解了@RequestMapping的控制器的方法上。
- @ExceptionHandler用於指定異常處理方法。當與@RestControllerAdvice配合使用時,用於全域性處理控制器裡的異常。
- @InitBinder用來設定WebDataBinder,用於自動繫結前臺請求引數到Model中。
- @ModelAttribute本來作用是繫結鍵值對到Model中,當與@ControllerAdvice配合使用時,可以讓全域性的@RequestMapping都能獲得在此處設定的鍵值對