본문 바로가기
Dev/Spring Framework

『MVC』 Bean Validation

by 세대교체 2024. 12. 3.

RESTful API를 개발할 때 클라이언트로부터 전달받은 데이터의 유효성 검증은 필수적인데 Spring Framework에서는 Bean Validation이란 기능을 지원한다.

 

Bean Validation어노테이션을 활용하여 객체의 프로퍼티 값이 특정 조건을 만족하는지 검증하는 프레임워크다. Spring Boot에서는 기본으로 지원한다.

@Valid, Java에서 지원하는 어노테이션
@Validated, Spring에서 지원하는 어노테이션 -> 내부에 groups 기능을 포함하고 있다.

 

 

내부 구조

Bean ValidationJava 표준 스펙(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) 숫자가 지정된 최대값 이하여야 한다.
@Email 유효한 이메일 형식이어야 한다.
@Pattern(regexp) 정규식을 만족해야 한다.

출처

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 강의 | 김영한 - 인프런

 

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 강의 | 김영한 - 인프런

김영한 | 웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. MVC 2편에서는 MVC 1편의 핵심 원리와 구조 위에 실무 웹 개발에 필요한 모든 활용 기술들을 학습

www.inflearn.com