요청 매개 변수의 이메일 속성이 올바른 형식인지 확인하기 위해 스프링 컨트롤러 중 하나에 대한 사용자 지정 예외 처리기 클래스를 작성했습니다. 그래서 클래스를 확장 ResponseEntityExceptionHandler
하고 @ExceptionHandler
.
그러나 봄 부팅 응용 프로그램 시작 중에 내 프로젝트 실행을 중지하는 예외가 발생합니다. 누군가가 이것을 해결하도록 도와 줄 수 있습니까?
서버 시작 중 예외 :
org.springframework.beans.factory.BeanCreationException : 클래스 경로 리소스 [org / springframework / boot / autoconfigure / web / servlet / WebMvcAutoConfiguration $ EnableWebMvcConfiguration.class]에 정의 된 이름이 'handlerExceptionResolver'인 Bean 생성 오류 : 팩토리 메소드를 통한 Bean 인스턴스화 실패;
중첩 된 예외는 org.springframework.beans.BeanInstantiationException : 인스턴스화 실패 [org.springframework.web.servlet.HandlerExceptionResolver] : 팩토리 메소드 'handlerExceptionResolver'에서 예외가 발생했습니다.
중첩 된 예외는 java.lang.IllegalStateException : [class org.springframework.web.bind.MethodArgumentNotValidException]에 매핑 된 모호한 @ExceptionHandler 메소드 : {public com.TestVO com.handler.exception.TestExceptionHandler.methodArgumentNotValidException (org.springframework.web.bind) .MethodArgumentNotValidException), public final org.springframework.http.ResponseEntity org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler.handleException (java.lang.Exception, org.springframework.web.context.request.WebRequest) 발생 java.lang.Exception}
처리 할 사용자 정의 클래스 MethodArgumentNotValidException
:
@ControllerAdvice
public class ExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ResponseBody
public ErrorVO processValidationError(MethodArgumentNotValidException ex) {
BindingResult result = ex.getBindingResult();
List<FieldError> fieldErrors = result.getFieldErrors();
FieldError fieldError = fieldErrors.get(0);
ErrorVO dto = new ErrorVO(fieldError.getDefaultMessage());
return dto;
}
}