개발/Spring

Spring Boot - Validation

Zziny 2023. 1. 24. 22:18

Spring Boot는 @Valid 어노테이션이 달린 argument를 찾으면 기본 JSR 380 구현 모듈인 Hibernate Validator를 자동으로 부트스트랩하고 argument의 유효성을 검사한다.

타겟 argument가 유효성 검사를 통과하지 못하면 Spring Boot는 MethodArgumentNotValidException 예외를 발생시킨다.

@ExceptionHandler 어노테이션을 사용하면 단일 메서드를 통해 지정된 타입의 예외를 처리할 수 있다.

따라서 유효성 검사 오류를 처리하는 데 사용할 수 있다.

/*
*이 메서드는 각각의 invalid 필드의 이름과 (유효성 검사 된) 오류 메시지를 Map에 저장한다.
*그런 다음 이후 처리를 위해 Map을 JSON 형식으로 클라이언트에 돌려 보낸다.
*/

@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(MethodArgumentNotValidException.class)
public Map<String, String> handleValidationExceptions(
  MethodArgumentNotValidException ex) {
    Map<String, String> errors = new HashMap<>();
    ex.getBindingResult().getAllErrors().forEach((error) -> {
        String fieldName = ((FieldError) error).getField();
        String errorMessage = error.getDefaultMessage();
        errors.put(fieldName, errorMessage);
    });
    return errors;
}

Custom Validator 추가하기

Hibernate Validation의  Custom constaraint 참고하기

정리 - 2023.01.23 - [일지] - Hibernate Validation - Custom constrains

 

참고

추가 자료