[SPRING]jUnit 개요
카테고리: SPRING
[19] Validation
참고 예제 SpringDAOWeb
19.1. Validation이란?
- 유효성 검증
- 사용자 또는 서버의 요청(Http Request) 내용에서 잘못된 내용이 있는지 확인하는 단계
19.2. Validation의 종류
- 데이터 검증
- 필수 데이터의 존재 유무
- 문자열의 길이, 숫자형 데이터일 경우 값의 범위 등
- E-Mail, 신용카드 번호, Date 등 특정 형식에 맞춘 데이터
19.3. Spring의 Validation
- 스프링은 웹 레이어에 종속적이지 않은 방법으로 Validation을 수행
- Validator 인터페이스 구현(Implement)을 통한 Validation
@InitBinder public void registerValidate(WebDataBinder binder) { . . . }
- Validator(객체 검증기) 인터페이스 구현에 사용되는 메서드
-
supports()
@Override ~ boolean supports(Class<?> clazz) {}
Validator의 동작 조건을 정의 (주로 Class의 Type을 비교)
이 검증기로 검증 가능한 객체인지를 알려주는 메서드 -
validate()
@Override ~ void validate(Object target, Errors errors) {}
- Object Target : 검증할 객체
- Errors errors : 검증 시 발생한 에러 저장소
reject(String errorCode) rejectValue(String field, String errorCode) rejectValue(String errorCode, String defaultMessage)
-
- Validator(객체 검증기) 인터페이스 구현에 사용되는 메서드
-
Validator를 검증기(Validator)로 등록
- WebDataBinder 사용
- 타입 변환
- 데이터 검증
- bindingResult
- WebDataBinder 사용
- Validator 인터페이스 구현(Implement)을 통한 Validation
19.4. Validation 수행 시 Tip
- Validation이 너무 여러 곳에 흩어져 있을 경우, 테스트 및 유지 / 보수성이 떨어짐
- 정책 변경 시 모든 중복 코드에 대한 검증을 수행해야 함
- 여러 곳에서 각각 다른 정책을 따르는 검증이 수행될 우려가 있음
- ErrorCode, ErrorMessage를 활용한 응답 생성하기
19.5. Data Binding
- 사용자나 외부 서버의 요청 데이터를 특정 도메인 객체(DTO)에 저장해 웹 프로그램의 Request에 담아 주는 것
19.6. MessageSource
- 다양한 리소스(파일, 배열)에서 메시지를 읽기 위한 인터페이스
- ResourceBundleMessageSource를 servlet-context.xml에 등록
- getMessage(String code, Object[] args, String defaultMessage, Locale local)
-
error_message.properties
|메시지 코드(errorCode)|메시지| |———————-|——|
19.7. 커스텀 태그 라이브러리 사용(Spring으로부터 제공)
- 라이브러리(jsp에 등록)
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<form> ... </form>
댓글 남기기