Spring boot 3.0.0+ ResponseEntityExceptionHandler 中的 @Override 错误

Gia*_*ear 6 java exception spring-boot

我按照这个示例(在中的Spring Boot 中验证请求正文和参数)和这个示例来实现一个处理程序来处理 JSON 作为参数的正确性。这些概念有些清晰,但达到这一点后,对该方法使用 @Override会给我一个错误,例如:Method does not override method from its superclasshandleMethodArgumentNotValid

我在网上搜索过如何解决这个问题,但我可能遗漏了一些东西。

package com.tericcabrel.hotel.exceptions;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.springframework.context.support.DefaultMessageSourceResolvable;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;

@ControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
  @Override
  protected ResponseEntity<Object> handleMethodArgumentNotValid(
      MethodArgumentNotValidException ex, HttpHeaders headers,
      HttpStatus status, WebRequest request) {

    Map<String, List<String>> body = new HashMap<>();

    List<String> errors = ex.getBindingResult()
        .getFieldErrors()
        .stream()
        .map(DefaultMessageSourceResolvable::getDefaultMessage)
        .collect(Collectors.toList());

    body.put("errors", errors);

    return new ResponseEntity<>(body, HttpStatus.BAD_REQUEST);
  }
}
Run Code Online (Sandbox Code Playgroud)