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
참고
추가 자료
'개발 > Spring' 카테고리의 다른 글
Spring Security + JWT를 이용한 자체 Login API 구현(1) - 회원(User)관련 클래스 생성 (0) | 2023.02.20 |
---|---|
빈 생명주기 콜백 (Bean LifeCycle Callback) (0) | 2022.12.27 |
스프링에서 외부 환경 변수 정보 읽어오기 (Properties 파일) (0) | 2022.12.21 |
SPRING_Framework Test 환경 구축 (0) | 2021.10.19 |
Eclipse에서 SPRING_Spring MVC 파일 설정 (0) | 2021.10.13 |