GW LABS

스프링 부트 핵심 가이드 (8) - 유효성 검사와 예외처리 본문

Book-Review/Programing

스프링 부트 핵심 가이드 (8) - 유효성 검사와 예외처리

GeonWoo Kim 2022. 8. 18. 19:48

10.1 일반적인 애플리케이션 유효성 검사의 문제점

  • 계층별로 진행하는 유효성 검사는 관리하기 어려움
    • 컨트롤러에서 한번?
    • 서비스에서 한번?
    • 중복 가능성이 있으며 어떤 검증 로직이 맞는 것인가…
  • Bean Validation: DTO 같은 도메인 모델에서 어노테이션으로 검증을 수행

 

10.3 스프링 부트에서의 유효성 검사

  • spring-boot-starter-validation
  • 스프링 부트의 유효성 검사
    • 일반적으로 DTO 객체를 대상으로 유효성 검사를 수행하는 것이 일반적
    • 유효성 검사하려는 DTO 객체를 받는 함수 인자 앞에 Valid 어노테이션을 명시하면 수행가능
    • 유효성 검사에 실패하면 400 Error가 발생!
    • 문자열 검증
      • Null
      • NotNull
      • NotEmpty
      • NotBlank
    • 최댓값/최솟값 검증
      • BigDecimal, BigInteger, int, long 등의 타입 지원
      • DemicalMax
      • DemicalMin
      • Min
      • Max
    • 값의 범위 검증
      • Positive
      • PositiveOrZero
      • Negative
      • NegativeOrZero
    • 시간에 대한 검증
      • Future
      • FutureOrPresent
      • Past
      • PastOrPresent
    • 이메일 검증
      • Email
    • 자릿수 범위 검증
      • Digits
    • Boolean 검증
      • AssertTrue
      • AssertFalse
    • 문자열 길이 검증
      • Size
    • 정규식 검증
      • Pattern
  • 스프링부트 어노테이션 Validated
    • 자바의 Valid 어노테이션을 포함하고 있음
    • 유효성 검사를 그룹으로 묶어서 대상을 특정할 수 있음
  • 커스텀 Validation 추가
    • ConstraintValidator 인터페이스를 통해 커스텀 Validation을 사용할 수 있음

 

10.4 예외 처리

  • 스프링 부트의 예외 처리 방식
    • ControllerAdvice, ExceptionHandler를 통한 모든 컨트롤러의 예외를 처리
    • ExceptionHandler를 통해 특정 컨트롤러의 예외를 처리
      • 더 구체화된 예외 클래스가 우선순위가 높다
      • ControllerAdvice보다 Controller 내 정의된 ExceptionHandler가 우선순위가 높다
Comments