북 스터디/스프링 부트 핵심가이드

유효성 검사와 예외처리

EnoughTT 2023. 4. 16. 16:59

유효성 검사

데이터를 사전 검증하는 작업

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

  • 계층별로 진행하는 유효성 검사
    • 관리하기 어려움
    • 중복코드 존재
    • 길어지는 검증코드

Hibernate Validator

Bean Validation 명세의 구현체로 도메인 모델에서 어노테이션을 통한 필드값 검증을 가능하게 도와줌

 

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

유효성 검사 라이브러리를 의존성으로 추가하면 사용할 수 있음

spring-boot-starter-validation

 

유효성 검사는 각 계층으로 데이터가 넘어오는 시점에 해당 데이터에 대한 검사를 실시함

계층간 데이터 전송에 대체로 DTO 객체를 활용하고 있기 때문에 DTO 객체를 대상으로 수행하는 것이 일반적

 

검증 어노테이션

 이외 @Validated 어노테이션커스텀 Validation을 추가해 검증 작업을 할 수 있음

 

예외 처리

예외 클래스 상속 구조

 

  Checked Exception Unchecked Exception
처리 여부 반드시 예외 처리 필요 명시적 처리를 강제하지 않음
확인 시점 컴파일 단계 실행 중 단계
대표적인 예외 클래스 IOException
SQLException
RuntimeException
NullPointException
IllegalArgumentException
IndexOutOfBoundException
SystemException

스프링 부트의 예외 처리 방식

예외가 발생했을 때 클라이언트에 오류 메시지를 전달하려면 각 레이어에서 발생한 예외를 엔드포인트 레벨인 컨트롤러로 전달해야 함

  • @RestControllerAdvice 와 @ExceptionHandler 를 통해 모든 컨트롤러의 예외 처리
  • @ExceptionHandler 를 통해 특정 컨트롤러의 예외 처리

@ControllerAdvice 대신 @RestControllerAdvice 를 사용하면 결과값을 JSON 형태로 반환 할 수 있음

 

@ControllerAdvice 와 @RestControllerAdvice 는 발생하는 예외를 한 곳에서 관리하고 처리할 수 있게 하는 기능을 수행함

@RestControllerAdvice(basePackages = "com.springboot.valid_exception")

컨트롤러에서 던진 예외는 @ControllerAdvice 와 @RestControllerAdvice 가 선언돼 있는 핸들러 클래스에서 매핑된 예외 타입을 찾아 처리하게 됨

특정 컨트롤러에서만 동작하는 @ExceptionHandler 메서드를 생성해서 처리할 수도 있음

'북 스터디 > 스프링 부트 핵심가이드' 카테고리의 다른 글

서비스의 인증과 권한 부여  (0) 2023.04.30
액추에이터 & 서버 간 통신  (0) 2023.04.23
연관관계 매핑  (0) 2023.04.09
Spring Data JPA  (0) 2023.04.01
데이터베이스 연동 - 2  (0) 2023.03.26