STUDY/이론

[Spring Master] 숙련 이론 - 데이터 검증하기

7alswn 2024. 11. 28. 15:34

Validation

Java는 null 값에 대한 접근에 대해 NullPointerException 오류가 발행하기 때문에 이러한 부분을 예방하기 위해 Validation 즉, 검증 과정이 필요합니다. Spring에서는 null 확인 뿐 아니라 문자의 길이 측정과 같은 다른 검증 과정도 쉽게 처리할 수 있도록 Bean Validation 제공하고 있습니다.

  • Bean Validation
@NotNull null 불가
@NotEmpty null, "" 불가
@NotBlank null, "". " " 불가
@Size 문자 길이 측정
@Max, @Min 최대값, 최소값
@Positive, @Negative 양수, 음수
@Email E-mail 형식
@Pattern 정규 표현식

Bean Validation을 적용한 해당 Object validation에 @Valid 어노테이션을 사용해 적용할 수 있습니다.

Validation 예외 처리

데이터 검증 시 오류가 발생했을 때는 Validation 예외 처리를 해야합니다.

  • BindingResult
@PostMapping("/user/signup")
public String signup(@Valid SignupRequestDto requestDto, BindingResult bindingResult) {
    // Validation 예외처리
    List<FieldError> fieldErrors = bindingResult.getFieldErrors();
    if(fieldErrors.size() > 0) {
        for (FieldError fieldError : bindingResult.getFieldErrors()) {
            log.error(fieldError.getField() + " 필드 : " + fieldError.getDefaultMessage());
        }
        return "redirect:/api/user/signup";
    }

    userService.signup(requestDto);

    return "redirect:/api/user/login-page";
}

위 코드는 회원가입 진행 시 데이터 검증 오류가 발생했을 때 로그인 페이지가 아닌, 회원가입 페이지로 이동하며 예외를 처리하는 예시입니다.

예외가 발생하면 BindingResult 객체에 오류에 대한 정보가 담기고, 파라미터로 BindingResult 객체를 받아올 수 있습니다.