跳到主要内容

简述Spring @ControllerAdvice ?

参考答案:

@ControllerAdvice 是 Spring 框架中用于全局异常处理和全局数据绑定的一个注解。它提供了一种集中处理控制器层(Controller Layer)中公共逻辑的方式,如全局异常处理、数据绑定等。

@ControllerAdvice 注解的类通常包含多个方法,这些方法通过特定的注解来处理特定的任务,如:

  • @ExceptionHandler:用于处理控制器层抛出的异常。通过该方法,你可以自定义异常处理逻辑,并返回统一的异常响应给前端。
  • @InitBinder:用于全局数据绑定,可以在数据绑定到控制器之前对数据进行预处理。
  • @ModelAttribute:在方法上添加该注解,可以将该方法作为全局的模型属性处理器,用于处理模型属性的值。

下面是一个简单的示例,展示如何使用 @ControllerAdvice@ExceptionHandler 来处理异常:

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public ResponseEntity<Object> handleException(Exception ex) {
        // 自定义异常处理逻辑
        // 返回统一的异常响应给前端
        return new ResponseEntity<>(new ErrorResponse("发生错误:" + ex.getMessage()), HttpStatus.INTERNAL_SERVER_ERROR);
    }
}

在上面的示例中,GlobalExceptionHandler 类使用 @ControllerAdvice 注解进行标记,表明该类是一个全局异常处理器。handleException 方法使用 @ExceptionHandler 注解来捕获控制器层抛出的异常,并返回一个统一的异常响应给前端。

通过使用 @ControllerAdvice,你可以实现更加灵活和集中的异常处理和数据绑定逻辑,提高代码的可维护性和复用性。