5. Bean Validation을 이용한 값 검증 처리

meteorfish·2022년 11월 8일

spring CH12 MVC 2

목록 보기
4/4
  • @ValidBean Validation 스펙에 정의.
  • Bean Validation는 @NotNull, @Digits, @Size 등의 애노테이션을 제공.
  • Validator 작성없이 커맨드 객체의 값 검증 처리 가능!

[ Bean Validation를 이용해 커맨드 객체 값 검증 방법 ]

  • Bean Validation과 관련된 의존을 설정에 추가.
  • 커맨드 객체에 @NotNull, @Digits 등을 이용해서 검증 규칙을 설정.

1. Bean Validation 관련 의존 추가하기.

  • Bean Validation사용하려면 API를 정의한 모듈과 API를 구현한 프로바이더를 의존으로 추가해야 함.
  • 프로바이더론 Hibernate Validator 사용.
    implementation("org.hibernate.validator:hibernate-validator:7.0.0.Final")
    implementation("org.glassfish:jakarta.el:3.0.3")
  • 이제 애노테이션을 사용이 가능하다.
public class RegisterRequest {
	@NotBlank
	@Email
	private String email;
	@Size(min=6)
	private String password;
	@NotEmpty
	private String confirmPassword;
	@NotEmpty
	private String name;
    
    ...

2. 커맨드 객체에 검증 규칙을 설정.

  • Bean Validation 애노테이션이 적용된 커맨드 객체를 검증하기 위해 OptionalValidatorFactoryBean 클래스를 빈으로 등록

  • @EnableWebMvc 사용하면 OptionalValidatorFactoryBean 을 글로벌 범위 Validator로 등록함.

  • @Valid가 붙은 메서드를 이 글로벌 범위 Validator로 검증하자.

  • 글로벌 범위 Validator를 따로 설정했을 경우, 삭제하지 않으면 글로벌 범위 Validator 로 사용하지 않음.
    => 스프링 MVC는 별도 설정한 글로벌 범위 Validator가 없을 경우에만, OptionalValidatorFactoryBean 을 글로벌 범위 Validator로 사용.

  • Bean Validation 프로바이더가 제공하는 기본 에러 메시지를 이용,

    [ 기존 메시지 대신 새로 메시지만들고 싶을 때 ]

    • 애노테이션이름.커맨드객체모델명.프로퍼티명
    • 애노테이션이름.프로퍼티명
    • 애노테이션 이름

    위 규칙을 따르는 메시지 프로퍼티 파일을 추가하면 됨.



5.1 Bean Validation의 주요 애노테이션

  • 모든 애노테이션은 javax.validation.constraints 패키지에 정의됨.

  • @NotNull 제외한 나머지 애노테이션은 검사 대상이 null이면 유효한 것으로 판단.
    따라서, 필수 입력을 원하면 @NotNull@Size를 같이 쓰면 됨.

0개의 댓글