Sprint Boot @RestControllerAdvice使用方法详解

  • Post category:Java

Spring Boot中的 @RestControllerAdvice

在Spring Boot中,@RestControllerAdvice注解用于处理Controller中抛出的异常,并返回一个JSON格式的响应。当Controller中抛出异常时,Spring Boot会自动查找匹配的@RestControllerAdvice类,并调用该类中的方法来处理异常。在本文中,我们将详细介绍@RestControllerAdvice的作用和使用方法,并提供两个示例说明。

@RestControllerAdvice的作用

@RestControllerAdvice注解用于处理Controller中抛出的异常,并返回一个JSON格式的响应。当Controller中抛出异常时,Spring Boot会自动查找匹配的@RestControllerAdvice类,并调用该类中的方法来处理异常。@RestControllerAdvice类中的方法可以返回一个自定义的响应对象,用于描述异常信息。

@RestControllerAdvice的使用方法

使用@RestControllerAdvice注解处理异常的步骤如下:

  1. 定义一个@RestControllerAdvice类,用于处理指定类型的异常。
  2. 在@RestControllerAdvice类中定义一个@ExceptionHandler方法,用于处理指定类型的异常,并返回一个自定义的响应对象。

下面是一个简单的示例:

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(UserNotFoundException.class)
    public ResponseEntity<ErrorResponse> handleUserNotFoundException(UserNotFoundException ex) {
        ErrorResponse errorResponse = new ErrorResponse();
        errorResponse.setCode(HttpStatus.NOT_FOUND.value());
        errorResponse.setMessage(ex.getMessage());
        return new ResponseEntity<>(errorResponse, HttpStatus.NOT_FOUND);
    }
}

在上面的示例中,我们定义了一个GlobalExceptionHandler类,并使用@RestControllerAdvice注解标记该类。该类中包含一个handleUserNotFoundException方法,用于处理UserNotFoundException异常,并返回一个ErrorResponse对象。

下面是另一个示例:

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    public ResponseEntity<ErrorResponse> handleException(Exception ex) {
        ErrorResponse errorResponse = new ErrorResponse();
        errorResponse.setCode(HttpStatus.INTERNAL_SERVER_ERROR.value());
        errorResponse.setMessage(ex.getMessage());
        return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
    }
}

在上面的示例中,我们定义了一个GlobalExceptionHandler类,并使用@RestControllerAdvice注解标记该类。该类中包含一个handleException方法,用于处理所有类型的异常。当Controller抛出异常时,Spring Boot会自动调用该方法,并返回一个ErrorResponse对象。

结论

在Spring Boot中,@RestControllerAdvice注解用于处理Controller中抛出的异常,并返回一个JSON格式的响应。使用@RestControllerAdvice注解处理异常的步骤包括定义一个@RestControllerAdvice类,用于处理指定类型的异常,并在@RestControllerAdvice类中定义一个@ExceptionHandler方法,用于处理指定类型的异常,并返回一个自定义的响应对象。在实际应用中,我们可以根据具体的业务需求,灵活使用@RestControllerAdvice注解来处理异常。