一: @ControllerAdvice
@ControllerAdvice,是Spring3.2提供的新注解,它是一个Controller增强器,可对controller中被 @RequestMapping注解的方法加一些逻辑处理。最常用的就是异常处理
二:@ControllerAdvice配合@ExceptionHandler使用
当将异常抛到controller时,可以对异常进行统一处理,规定返回的json格式或是跳转到一个错误页面
三:例子
@Slf4j
@ControllerAdvice
public class ExceptionHandlerAdvice {
@ResponseStatus(HttpStatus.OK)
@ResponseBody
@ExceptionHandler({MethodArgumentNotValidException.class})
public <T> ResponseEntity<ResultDTO<T>> handleBusinessException(MethodArgumentNotValidException method) {
String defaultMessage = method.getBindingResult().getFieldError().getDefaultMessage();
log.error("参数出错: {}", defaultMessage);
return ResponseEntity.ok(ResultDTO.getErrorResult(defaultMessage));
}
@ResponseStatus(HttpStatus.OK)
@ResponseBody
@ExceptionHandler(ValidationException.class)
public <T> ResponseEntity<ResultDTO<T>> handleBusinessException(ValidationException exception) {
String defaultMessage = exception.getMessage();
log.error("参数出错,{}", defaultMessage);
return ResponseEntity.ok(ResultDTO.getErrorResult(defaultMessage));
}
}