1. 程式人生 > 其它 >spring boot--全域性異常監聽

spring boot--全域性異常監聽

前言

  在閱讀這篇文章之前,你可能需要對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

方法,適用於所有使用@RequestMapping方法。
  

  @RestControllerAdvice的特點:

  1. @ControllerAdvice註解可以將對於控制器的全域性配置放在同一個位置。
  2.  @RestControllerAdvice註解的類的方法可以使用@ExceptionHandler、@InitBinder、@ModelAttribute註解到方法上。
  3. @RestControllerAdvice註解將作用在所有註解了@RequestMapping的控制器的方法上。
  4. @ExceptionHandler用於指定異常處理方法。當與@RestControllerAdvice配合使用時,用於全域性處理控制器裡的異常。
  5. @InitBinder用來設定WebDataBinder,用於自動繫結前臺請求引數到Model中。
  6. @ModelAttribute本來作用是繫結鍵值對到Model中,當與@ControllerAdvice配合使用時,可以讓全域性的@RequestMapping都能獲得在此處設定的鍵值對