[Spring] 유효성 검증 Validation Data binding MessageSource


Spring Validation

 

1. Validation

 

1) 유효성 검증

– 사용자 또는 서버의 요청(http request) 내용에서 잘못된 내용이 있는지 확인하는 단계를 말한다.

2. Validation 종류

 

1) 데이터 검증

 

– 필수 데이터의 존재 유무

– 문자열의 길이나 숫자형 데이터의 경우 값의 범위

 – email, 신용카드 번호, date 등 특정 형식에 맞춘 데이터


3. Spring의 Validation

 

1) 스프링은 웹 레이어에 종속적이지 않은 방법으로 밸리데이션을 한다.

2) Validator 인터페이스 구현(implement)을 통한 validation

 

– 객체를 검증하기 위한 인터페이스

– 객체 검증기(vlaidator) 구현에 사용

– boolean supports(Class> clazz) : 이 Validator가 동작할 조건을 정의, 주로 class의 타입을 비교. 이 검증기로 검증 가능한 객체인지 알려주는 메서드.

 

– void validate(Object target, Errors errors) : 원하는 검증을 진행함. 객체를 검증하는 메서드.

Object target : 검증할 객체
Errors errors : 검증 시 발생한 에러 저장소

 

– reject(String errorCode)

 

– rejectValue(String field, String errorCode)

field : 에러 발생 필드
errorCode : 해당 에러에 대한 에러코드
defaultMessage : 해당 에러 에러에 대한 default 메시지

 

3) Validator를 검증기(validator)로 등록해줘야 한다.

– WebDataBinder를 사용

– 타입 변환
– 데이터 검증
– bindingResult




4. Validation 수행 시 주의사항

 

1) validation이 너무 여러 군데에 흩어져있으면 테스트 및 유지 보수성이 떨어진다.

– 정책 변경 시에 모든 중복 코드를 수행해야한다.

– 여러 군데서 다른 정책을 따르는 검증이 수행될 수 있다.

 

2) ErrorCode, ErrorMessage를 활용해 응답 생성을 한다.




5. Data binding

 

1) 사용자나 외부 서버의 요청 데이터를 특정 도메인 객체(DTO)에 저장해서 웹 프로그램에 Request에 담아 주는 것을 말한다.

6. MessageSource

 

1) 다양한 리소스(파일, 배열)에서 메시지를 읽기 위한 인터페이스

 

2) ResourceBundleMessageSource를 Servlet-context.xml에 등록

– getMessage(String code, Object[] args, String defaultMessage, Locale Locale)

 

3) error_message

 

메시지 코드(errorCode) ———————– 메세지




7. 스프링이 제공하는 커스텀 태그 라이브러리 사용

 

1)