개발/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
참고
추가 자료