본문 바로가기
  • 실행력이 모든걸 결정한다
Spring Series/Spring Framework

[Spring] JSR-303 Bean 검증 방식

by 김코더 김주역 2022. 9. 25.
반응형

LocalValidatorFactoryBean

- JSR-303의 검증 기능을 사용할 수 있도록 하는 일종의 어댑터다.

- JSR-303의 bean 검증 방식을 통해 오브젝트의 필드에 달린 제약조건 어노테이션을 이용해 검증을 진행할 수 있다.

예시

public class User {
    int id;
    
    @NotNull // null 값이 아님을 검증
    @Size(min=1, max=50) // 빈 문자열 방지, 최대 크기 제한
    String name;
    
    @Min(0) // 최소값을 0으로 지정
    int age;
}

 

- 이 팩토리 빈이 생성하는 bean의 타입은 org.springframework.Validation.Validator다. LocalValidatorFactoryBean을 bean으로 등록해두고 이를 DI 받아서 @InitBinder에서 WebDataBinder에 설정하거나, WebBindingInitializer를 이용해 모든 컨트롤러에 일괄적으로 적용하는 등의 방식으로 사용하면 된다.

<bean id="localValidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />

 

- 직접 검증 로직을 담은 ConstraintValidator의 구현체를 만들어서 제약조건 어노테이션으로 사용할 수도 있다.

@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy=UserNameValidator.class)
public @interface UserName {}

 

- 에러 코드는 해당 어노테이션의 이름으로 지정된다. 이를 활용하여 messages.properties에 에러 메시지를 작성해두면 해당 에러가 발생했을 때 BindingResult에 반영된다. 디폴트 에러 메시지는 자동으로 등록되기 때문에 필수 사항은 아니다. 자세한 내용은 아래 포스팅을 참고하자.

https://kimcoder.tistory.com/528

 

[Spring] 프로퍼티 파일에서 BindingResult 메시지 관리하기

1. MessageCodeResolver 1) 기본 동작 - BindingResult에 저장될 에러 메시지의 키 후보를 생성해두고, messages.properties와 같은 프로퍼티 파일에서 해당 키 값을 찾아 그에 대한 메시지를 에러 메시지로 활용..

kimcoder.tistory.com

 

 

● 참고 자료 : 토비의 스프링 3.1 Vol.2

 

 

반응형

댓글