유효성 검사
데이터를 사전 검증하는 작업
일반적인 애플리케이션 유효성 검사 문제점
- 계층별로 진행하는 유효성 검사
- 관리하기 어려움
- 중복코드 존재
- 길어지는 검증코드
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 |