스프링 프레임워크 8장: 유효성 검사 기능 알아보기

SR Lee·2023년 7월 2일
0

1. 유효성 검사(validation)의 종류

  1. 정의: 입력 내용이 조건을 만족하는지 확인하는 검사
  2. 목적: 입력 체크를 통해 시스템 에러 처음부터 차단하기 (input의 형식이 옳은지) 등
  3. 종류
    1. 단일 항목 검사: 항목 하나에 대해 설정하는 입력 체크 기능 (주요 어노테이션 알아두기)
    2. 상관 항목 검사: 여러 필드에 대해 혼합해서 체크하는 것
      1. Bean Validation
      2. Validator Interface (ft. Spring Framework)

2. 단일 항목 검사를 사용하는 프로그램 만들기

  1. 프로젝트 생성 (Dependencies: Spring Dev Tools, Lombok, Validation, Thymeleaf, Spring Web)
  2. 애플리케이션 레이어 생성
    1. Form 클래스 생성, 컨트롤러 생성, 뷰 생성
    2. 컨트롤러에 바인딩 메서드 추가
    3. entry.html (뷰)에 에러 표시 처리 추가
    4. confirm.html (confirmView 메서드의 반환값에 대응) 생성
  3. 확인

3. 메시지 관리에 대해 알아보기

  1. 애플리케이션에 표시하는 메시지는 프로퍼티 파일로 관리합니다 (프로그램과 별도로 관리)
    1. 이유: 유지 관리가 더 용이
    2. ValidationMessages.properties, messages.properties
  2. 스프링부트에서 메시지 관리
    1. messages.properties 생성

      1. src/main/resources → 새로만들기, 파일, 파일명 messages.properties
      2. 이는 키=값 형태로 프로퍼티 저장
      3. ValidationMessages.properties 생성 (아까 messages.properties와 같은 방식으로)
      4. 예시
        1. 단일 항목 검사 메시지): FQCN.message={0}
        2. 형변환 체크 메시지: type.Mistmatch.클래스의FQCN={0} (FQCN: Fully Qualified Class Name)
      5. Form 클래스 수정 (message 생략)
      6. 확인

      IMG_0439.jpg

4. 커스텀 유효성 검사기를 사용하는 프로그램 만들기 (생성 & 등록)

  1. 커스텀 유효성 검사기 생성
    1. Validator 인터페이스 작성 절차
      1. Validator 인터페이스 구현하는 커스텀 유효성 검사기 생성
      2. 컨트롤러 앞에서 만든 커스텀 유효성 검사기 주입하고 WevDataBinder 인터페이스의 addValidators 메서드로 커스텀 유효성 검사기를 등록해 스프링 MVC에서 이용할 수 있게 하기
    2. Validator 구현 클래스 생성
      1. src/main/java → com.example.demo 폴터 선택해 새로운 패키지 만들기 → com.example.demo.validator 생성
      2. validator 패키지 안에서 CalcValidator 클래스 생성 (이 클래슨는 org.springframework.validation.Validator 인터페이스 구현)
      3. error의 경우 reject메서드에 메시지 키 지정, 메시지 키는 messages.properties에 작성
      4. messages.properties에 추가
  2. 컨트롤러에 커스텀 유효성 검사기 등록
    1. 컨트롤러에 커스텀 유효성 검사기(CalcValidator) 주입
    2. @InitBinder 부여된 메서드에 등록 (이때 Form 클래스의 Model에 식별명 지정, 아닌경우 Model위 모든 유효성 검사 통과 못하면 예외 발생
    3. WebDataBinder 인터페이스의 addValidators 메서드에 커스텀 유효성 검사기를 등록하면 스프링 MVC에서 이용할 수 있다
    4. 확인

TIP. 유효성 검사의 실행 순서 정해놓기 @GroupSequence

profile
studying backend

0개의 댓글