[Spring boot] validation 순서 정하기

JO Yeongmu·2024년 5월 7일
0

Spring Boot

목록 보기
3/8

문제 점

🔥 발견

비밀번호를 입력하지 않고 요청을 보낼 때 @Pattern, @NotBlank 가 무작위한 순서로 검증 되는 문제 점을 확인했습니다.


🔥 크게 문제가 되는가 ?

현재 진행 중인 프로젝트에서는 validation필드에 대한 값을 핸들링하여 응답을 하기 때문에 @NotBlank 가 응답되는 것은 잘못되었다고 판단했습니다.



validation 순서 정하기

✏️ ValidationSequence 인터페이스 작성

@GroupSequence({
        NotBlankGroup.class,
        PatternGroup.class,
        SizeGroup.class,
        EmailGroup.class
})
public interface ValidationSequence {
}

✏️ValidationGroups 클래스 작성

public class ValidationGroups {
    public interface NotBlankGroup {}
    public interface PatternGroup {}
    public interface SizeGroup {}
    public interface EmailGroup {}
}

원하는 순서를 지정 해야합니다.



적용 법

@Validated(ValidationSequence.class)

@PostMapping
    public ResponseEntity<?> join(@Validated(ValidationSequence.class) @RequestBody JoinReqDto joinReqDto) {
        return ResponseEntity.status(CREATED)
                .body(ResponseDto.success(CREATED, userService.join(joinReqDto)));
    }

검증 할 필드에 그룹 지정

 @NotBlank(message = "이메일이 입력되지 않았습니다.", groups = NotBlankGroup.class)
    @Pattern(regexp = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$",
            message = "이메일 형식에 맞지 않습니다.",
            groups = PatternGroup.class)
    @Schema(description = "이메일 형식이여야 합니다.",
            example = "carumuch@gmail.com")
    private String email;
profile
도전해 보는 것이 성장의 첫걸음입니다 :)

0개의 댓글