2024. 1. 15. 22:37ㆍ백엔드/Spring Boot
데이터를 전달받을 때 가장 중요한 것은 바로 올바른 형식의 데이터가 들어왔는지를 확인하는 것이라고 생각합니다.
이번 게시글에서는 Spring boot에서 유효성 검사를 하는 방법(데이터 검증 or Validation)에 대하여 작성해보려고 합니다.
# 유효성 검사(데이터 검증, Validation)
클라이언트에서 서버로 전달(@RequestBody, @RequestParam, @PathVariable)되어 들어오는 데이터에 대해 개발자가 의도한 형식의 값이 제대로 들어오는지 체크하는 과정을 뜻한다.
데이터 검증은 여러 계층(Controller, Service...)에서 발생하게 되는데 유효하지 않은 데이터가 들어오게 된다면 MethodArgumentNotValidException 이 발생된다.
# start-validation dependency
Spring boot 2.3버전 이후부터는 dependency를 추가해줘야 한다.
implementation 'org.springframework.boot:spring-boot-starter-validation'
# Validation 관련 어노테이션
※ message : 반환되는 에러 메시지를 설정 할 수 있다.
※ payload : 심각도 설정 할 수 있다. 자주 사용되지 않기 때문에 문서를 참고 해서 확인해 보자
※ groups : 상황별 validation 제어를 위해 사용
@NotBlank(message = "이름은 필수 입력 항목입니다.", groups = BasicValidationGroup.class)
🧐 Null, 공백, 빈값 검증
공백 : " " / 빈 문자열 : ""
어노테이션 | 기능 |
@Null | Null 만 허용 |
@NotNull | 허용 : 빈 문자열, 공백 비허용 : Null |
@NotEmpty | 허용 : 공백 비허용 : Null, 빈 문자열 |
@NotBlank | 무조건 값이 존재해야 함 Null, 빈 문자열, 공백 비허용 |
🧐 날짜 검증
어노테이션 | 기능 |
@Past | 현재(Now)보다 과거의 날짜가 입력되어야 함 |
@PastOrPresent | 현재(Now)이거나 과거의 날짜가 입력되어야 함 |
@Future | 현재(Now)보다 미래의 날짜가 입력되어야 함 |
@FutureOrPresent | 현재(Now)이거나 미래의 날짜가 입력되어야 함 |
🧐 최솟값/최댓값, 참/거짓 검증
어노테이션 | 기능 |
@Min(value=) | value 값 이상이면서 정수인 값 허용 , Null 값 유효 |
@Max(value=) | value 값 이하이면서 정수인 값 허용 , Null 값 유효 |
@DecimalMin | value 값 이상 허용 , 소숫점 허용 |
@DecimalMax | value 값 이하 허용 , 소숫점 허용 |
@AssertTrue | 값이 true 인지확인 |
@AssertFasle | 값이 false 인지확인 |
🧐 범위 검증
어노테이션 | 기능 |
@Size(min=, max=) | value 값 이상이면서 정수인 값 허용 , Null 값 유효, 문자열 길이 체크 가능 |
@Digits(integer = ,fraction = ) | 정수부(integer)와 소수부(fraction)가 지정된 자리수 이하여야 함 |
@Length(min=, max=) | 문자열의 길이가 min과 max의 사이인지 확인 |
@Range(min=, max=) | 입력된 숫자값이 min과 max의 사이인지 확인 |
🧐 그 외
어노테이션 | 기능 |
@Email(regexp = "") | Luhn 알고리즘으로 입력한 값이 이메일 형식의 데이터인지 확인, Null 값 허용 regexp에 정규표현식 지정 가능 |
@Pattern(regexp = "") | 입력한 값이 regexp에 지정한 정규표현식을 만족하는지 확인 |
@CreditCardNumber(ignoreNonDigitCharacters=) | 입력한 문자열이 신용카드 번호 형식인지확인 |
@URL(protocol=, host=, port=, regexp=, flags=) | 입력한 문자열이 URL 형식인지 확인 |
@Valid | 객체의 유효성 검사 |
Reference
https://docs.oracle.com/javaee/7/tutorial/bean-validation001.htm
https://hyeran-story.tistory.com/81
https://dev-coco.tistory.com/123
https://www.youtube.com/watch?v=J_7xasdHBZI&list=PLlTylS8uB2fBOi6uzvMpojFrNe7sRmlzU&index=17
'백엔드 > Spring Boot' 카테고리의 다른 글
Spring 그리고 Spring Boot (1) | 2024.01.30 |
---|---|
Spring boot Exception Handling (1) | 2024.01.17 |
롬복 @AllArgsConstructor, @NoArgsConstructor, @RequiredArgsConstructor 어노테이션 알아보기 (1) | 2024.01.15 |
SOLID 원칙 (2) | 2024.01.10 |
디자인 패턴과 SOLID 원칙 (3) | 2024.01.09 |