1. 유효성 검사(validation)의 종류
- 정의: 입력 내용이 조건을 만족하는지 확인하는 검사
- 목적: 입력 체크를 통해 시스템 에러 처음부터 차단하기 (input의 형식이 옳은지) 등
- 종류
- 단일 항목 검사: 항목 하나에 대해 설정하는 입력 체크 기능 (주요 어노테이션 알아두기)
- 상관 항목 검사: 여러 필드에 대해 혼합해서 체크하는 것
- Bean Validation
- Validator Interface (ft. Spring Framework)
2. 단일 항목 검사를 사용하는 프로그램 만들기
- 프로젝트 생성 (Dependencies: Spring Dev Tools, Lombok, Validation, Thymeleaf, Spring Web)
- 애플리케이션 레이어 생성
- Form 클래스 생성, 컨트롤러 생성, 뷰 생성
- 컨트롤러에 바인딩 메서드 추가
- entry.html (뷰)에 에러 표시 처리 추가
- confirm.html (confirmView 메서드의 반환값에 대응) 생성
- 확인
3. 메시지 관리에 대해 알아보기
- 애플리케이션에 표시하는 메시지는 프로퍼티 파일로 관리합니다 (프로그램과 별도로 관리)
- 이유: 유지 관리가 더 용이
- ValidationMessages.properties, messages.properties
- 스프링부트에서 메시지 관리
-
messages.properties 생성
- src/main/resources → 새로만들기, 파일, 파일명 messages.properties
- 이는 키=값 형태로 프로퍼티 저장
- ValidationMessages.properties 생성 (아까 messages.properties와 같은 방식으로)
- 예시
- 단일 항목 검사 메시지): FQCN.message={0}
- 형변환 체크 메시지: type.Mistmatch.클래스의FQCN={0} (FQCN: Fully Qualified Class Name)
- Form 클래스 수정 (message 생략)
- 확인
4. 커스텀 유효성 검사기를 사용하는 프로그램 만들기 (생성 & 등록)
- 커스텀 유효성 검사기 생성
- Validator 인터페이스 작성 절차
- Validator 인터페이스 구현하는 커스텀 유효성 검사기 생성
- 컨트롤러 앞에서 만든 커스텀 유효성 검사기 주입하고 WevDataBinder 인터페이스의 addValidators 메서드로 커스텀 유효성 검사기를 등록해 스프링 MVC에서 이용할 수 있게 하기
- Validator 구현 클래스 생성
- src/main/java → com.example.demo 폴터 선택해 새로운 패키지 만들기 → com.example.demo.validator 생성
- validator 패키지 안에서 CalcValidator 클래스 생성 (이 클래슨는 org.springframework.validation.Validator 인터페이스 구현)
- error의 경우 reject메서드에 메시지 키 지정, 메시지 키는 messages.properties에 작성
- messages.properties에 추가
- 컨트롤러에 커스텀 유효성 검사기 등록
- 컨트롤러에 커스텀 유효성 검사기(CalcValidator) 주입
- @InitBinder 부여된 메서드에 등록 (이때 Form 클래스의 Model에 식별명 지정, 아닌경우 Model위 모든 유효성 검사 통과 못하면 예외 발생
- WebDataBinder 인터페이스의 addValidators 메서드에 커스텀 유효성 검사기를 등록하면 스프링 MVC에서 이용할 수 있다
- 확인
TIP. 유효성 검사의 실행 순서 정해놓기 @GroupSequence