본문 바로가기

[MVC] ValidatorFactory를 직접 사용한 Bean Validation

@xuv22025. 10. 21. 14:18

DTO 작성

아래와 같은 DTO가 있다고 가정하자. 해당 DTO는 뷰에서 컨트롤러로 사용자 정보를 넘기는 DTO이다.

스프링이 지원하는 검증 에노테이션인 NotBlank를 필드마다 추가하였다.

package register.register.service.login;

import jakarta.validation.constraints.NotBlank;
import lombok.Data;

@Data
public class LoginForm {

    @NotBlank
    private String studentNumber;

    @NotBlank
    private String password;

    public LoginForm() {
    }

    public LoginForm(String studentNumber, String password) {
        this.studentNumber = studentNumber;
        this.password = password;
    }
}

ValidatorFactory -> Validator로 직접 검증

@Test
public void loginFormBeanValidationTest() throws Exception {
    //given
    ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
    Validator validator = validatorFactory.getValidator();

    LoginForm form = new LoginForm();
    form.setStudentNumber("     ");
    form.setPassword("     ");

    //when
    Set<ConstraintViolation<LoginForm>> violations = validator.validate(form);

    //then
    for (ConstraintViolation<LoginForm> violation : violations) {
        System.out.println("violation = " + violation);
        System.out.println("violation.message() = " + violation.getMessage());
    }
 }

현재 빈값으로 두가지 필드를 모두 작성하였다.

테스트를 작성해보면 form 객체의 모든 필드가 현재 공백임이 검증되었고, 그에 따른 스프링의 기본 오류 메시지가 출력되는 걸 볼 수 있다.

xuv2
@xuv2 :: xuvlog

폭싹 늙었수다

목차