简述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
,你可以实现更加灵活和集中的异常处理和数据绑定逻辑,提高代码的可维护性和复用性。