@ControllerAdvice注解的作用和示例

@ControllerAdvice 是一个用于处理全局异常、全局数据绑定和全局数据预处理的注解。它能够被用于在一个类中集中处理多个控制器类所抛出的异常,从而使得开发者能够更加方便地处理错误。

下面是 @ControllerAdvice 的几个作用:

全局异常处理:使用 @ExceptionHandler 注解处理控制器类中抛出的指定异常,当该异常发生时,该方法会被自动调用。

全局数据绑定:使用 @InitBinder 注解来设置控制器类中数据绑定的规则。

全局数据预处理:使用 @ModelAttribute 注解来处理控制器类中公共的数据预处理逻辑。

下面是一个使用 @ControllerAdvice 处理全局异常的示例代码:

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    public ResponseEntity<String> handleException(Exception ex) {
        // 处理异常
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Internal Server Error");
    }
}

在这个示例中,使用 @ExceptionHandler 注解指定了该方法可以处理所有类型的异常,当发生异常时,该方法会返回一个指定的响应对象。