RESTful API를 개발할 때 클라이언트로부터 전달받은 데이터의 유효성 검증은 필수적인데 Spring Framework에서는 Bean Validation이란 기능을 지원한다.
Bean Validation은 어노테이션을 활용하여 객체의 프로퍼티 값이 특정 조건을 만족하는지 검증하는 프레임워크다. Spring Boot에서는 기본으로 지원한다.
@Valid, Java에서 지원하는 어노테이션
@Validated, Spring에서 지원하는 어노테이션 -> 내부에 groups 기능을 포함하고 있다.
내부 구조
Bean Validation은 Java 표준 스펙(JSR 380)으로 다음과 같은 주요 구성 요소로 이루어져 있다.
Constraint Annotations | @NotNull, @Size 등과 같이 필드에 적용되어 검증 규칙을 정의한다. |
ConstraintValidator Interface | 각 제약 어노테이션의 실제 검증 로직을 구현한다. |
Validator Interface | 객체 전체의 검증을 수행하는 핵심 인터페이스다. |
ConstraintViolation | 검증 실패 시 발생하는 오류 정보를 담는 객체다. |
전체 동작 과정
사용 방법
Spring Boot를 사용한다면 별도의 의존성 추가 없이 기본적으로 Hibernate Validator가 포함되어 있다.
1. DTO 클래스에 어노테이션 적용
2. Controller에서 검증 활성화
- @Valid 어노테이션을 사용하여 userDto 객체의 검증을 활성화한다.
- 검증 실패 시 MethodArgumentNotValidException이 발생한다.
3. 검증 결과 처리
전역 예외 처리를 통해 검증 실패에 대한 응답을 커스터마이징 할 수 있다.
DTO 클래스에 자주 사용하는 어노테이션
어노테이션 | 설명 |
@Null | null이어야 한다. |
@NotNull | null이 아니어야 한다. |
@NotEmpty | 문자열, 컬렉션 등이 null이 아니고 비어있지 않아야 한다. |
@NotBlank | 문자열이 null, 공백이 아니어야 한다. |
@Size(min, max) | 문자열, 컬렉션 등의 크기가 min 이상 max 이하여야 한다. |
@Min(value) | 숫자가 지정된 최소값 이상이어야 한다. |
@Max(value) | 숫자가 지정된 최대값 이하여야 한다. |
유효한 이메일 형식이어야 한다. | |
@Pattern(regexp) | 정규식을 만족해야 한다. |
출처
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 강의 | 김영한 - 인프런
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 강의 | 김영한 - 인프런
김영한 | 웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. MVC 2편에서는 MVC 1편의 핵심 원리와 구조 위에 실무 웹 개발에 필요한 모든 활용 기술들을 학습
www.inflearn.com
'Dev > Spring Framework' 카테고리의 다른 글
『Spring Batch』 스프링 배치 도메인 이해 (0) | 2024.12.07 |
---|---|
프레임워크와 라이브러리의 차이 (0) | 2024.12.06 |
『Spring MVC』 필터, 인터셉터 (0) | 2024.11.26 |
『Spring MVC』 메시지, 국제화 (0) | 2024.11.26 |
『Spring Boot』 Spring Boot Annotation 정리 (1) | 2024.11.25 |