본문 바로가기
웹프로그래밍 무작정따라하기/JAVA_Spring

[Spring Boot] 유효성 검사 / 데이터 검증

by RIMD 2023. 9. 19.

유효성 검사 / 데이터 검증 Validation
서비스의 비즈니스 로직이 올바르게 동작하기 위해 사용되는 데이터에 대한 사전 검증하는 작입 필요함
유효성 검사 혹은 데이터 검증이라고 부르는데, 흔히 Validation이라고 부름
데이터의 검증은 여러 계층에서 발생하는 흔한 작업
Validation은 들어오는 데이터에 대해 의도한 형식의 값이 제대로 들어오는지 체크하는 과정을 뜻함

일반적인 Validation의 문제점
일반적인 어플리케이션에서 사용되던 Validation방식은 몇가지 문제가 존재
- 어플리케이션 전체적으로 분산되어 존재
- 코드의 중복이 심함(코드가 복잡해짐)
- 비즈니스 로직에 섞여 잇어 검사 로직 추적이 어려움

 

Bean Validation / Hibernate Validator

앞서 나온 문제를 해결하기 위해 Java에서 2009년부터 Bean Validation이라는 데이터 유효성 검사 프레임워크를 제공

Bean Validation은 어노테이션을 통해 다양한 데이터를 검증할 수 있게 기능을 제공

 

Hibernate Validator는 Bean Validation명세에 대한 구현체

Spring Boot의 유효성 검사 표준은 Hibernate Validator를 채택

이전 버전의 Spring Boot에서는 Starter-web에 validation이 포함되어 있었지만

2.3버전부터 starter-validation을 추가 해야함

 

Validation관련 어노테이션

@Size 문자의 길이조건.
문자열, 컬렉션 또는 배열의 크기를 지정.
@Size(min = 2, max = 50)
@NotNull null 값 불가
필드 또는 메서드 파라미터가 null이 아닌지 확인합니다.
@NotEmpty @NotNull + ""값 불가
문자열, 컬렉션 또는 배열이 비어있지 않은지 확인합니다.
@NotBlank @NotEmpty + " "값 불가
문자열이 비어있지 않고, 공백 문자를 제외한 문자가 포함되어 있는지 확인
@Email 문자열이 이메일 주소 형식을 따르는지 확인
@Past 과거 날짜
@PastOrPresent @Past + 오늘날짜
@Future 미래 날짜
@FutureOrPresent @Future + 오늘 날짜
@Pattern 정규 표현식을 사용하여 문자열의 패턴을 검사
@Pattern(regexp = "[0-9]{5}")
@Max 최대값 조건 설정
숫자 필드가 특정 범위 내에 있는지 확인합니다. @Max(18)
@Min 최소값 조건 설정
@AssertTrue / AssertFalse 참/거짓 조건 설정
@Valid 해당 객체의 유효성 검사
중첩된 객체에 대한 유효성 검사 활성화. 예를 들어, 컬렉션 내의 객체나 개체의 내부 객체에 대한 유효성 검사를 수행할 때 사용.

 

댓글