프로그래밍/Spring
[Spring Boot] 유효성 검사 @Valid
I'm_
2024. 1. 30. 16:21
✅ 들어가며
학원에서 프로젝트를 진행했을 때 유효성 검사를 제대로 진행해보지 않아 이번 프로젝트에서 간단하게라도 유효성 검사 코드를 작성해보고자 한다. 스프링 부트에서 유효성 검사를 위한 어노테이션을 제공하고 있어서 프로젝트에 적용하기 위해 정리해보았다.
✅ 유효성 검사
📌 유효성 검사란?
데이터의 값이 유효한지, 조건이 타당한지 확인하는 것으로 올바르지 않은 데이터가 서버나 DB에 전송되는 것을 막기 위해 실시한다.
스프링부트에서는 @Valid나 @Validated 어노테이션을 이용하여 쉽게 유효성 검사를 진행할 수 있다.
📌 사용방법
0. 의존성 추가하기
implementation 'org.springframework.boot:spring-boot-starter-validation'
1. @Valid
- 클라이언트로부터 전달받는 파라미터에 @RequestBody 어노테이션을 붙이고 그 옆에 @Valid 어노테이션을 작성한다.
- @Valid 검증의 세부사항은 객체 안에 정의하여야 한다.
📌 객체에 정의하는 유효성 검증 세부사항
Annotation | 제약조건 |
@NotNull | Null 불가 |
@Null | Null만 입력 가능 |
@NotEmpty | Null, 빈 문자열 불가 |
@NotBlank | Null, 빈 문자열, 스페이스만 있는 문자열 불가 |
@Size(min=, max=) | 문자열, 배열 등의 크기가 만족하는가? |
@Pattern(regexp=) | 정규식을 만족하는가? |
@Max(숫자) | 지정 값 이하인가? |
@Min(숫자) | 지정 값 이상인가? |
@Future | 현재 보다 미래인가? |
@Past | 현재 보다 과거인가? |
@Positive | 양수만 가능 |
@PositiveOrZero | 양수와 0만 가능 |
@Negative | 음수만 가능 |
@NegativeOrZero | 음수와 0만 가능 |
이메일 형식만 가능 | |
@Digits(integer=,fraction=) | 대상 수가 지정된 정수와 소수 자리 수 보다 작은가? |
@DecimalMax(value=) | 지정된 값(실수) 이하인가? |
@DecimalMin(value=) | 지정된 값(실수) 이상인가? |
@AssertFalse | false인가? |
@AssertTrue | true인가? |
2. @Validated
- 요청 파라미터의 유효성 검증은 Controller에서 최대한 처리하는 것이 좋은데, 개발 도중 불가피하게 다른 곳에서 파라미터를 검증하는 경우 @Validated 어노테이션을 사용할 수 있다.
- 주로 Service 계층에서 사용한다.
✅ 나가며
이번 프로젝트에서는 @Valid어노테이션을 이용하여 유효성 검사를 해보고자 한다. 기회가 된다면 사용해 본 적 없던 정규식도 사용해보고 싶다.
📚 참고 자료