공부 기록

[Spring Boot] 유효성 검사 @Valid 본문

프로그래밍/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만 가능
@Email 이메일 형식만 가능
@Digits(integer=,fraction=) 대상 수가 지정된 정수와 소수 자리 수 보다 작은가?
@DecimalMax(value=) 지정된 값(실수) 이하인가?
@DecimalMin(value=) 지정된 값(실수) 이상인가?
@AssertFalse false인가?
@AssertTrue true인가?

 

2. @Validated

  • 요청 파라미터의 유효성 검증은 Controller에서 최대한 처리하는 것이 좋은데, 개발 도중 불가피하게 다른 곳에서 파라미터를 검증하는 경우 @Validated 어노테이션을 사용할 수 있다.
  • 주로 Service 계층에서 사용한다.

✅ 나가며

이번 프로젝트에서는 @Valid어노테이션을 이용하여 유효성 검사를 해보고자 한다. 기회가 된다면 사용해 본 적 없던 정규식도 사용해보고 싶다.


📚 참고 자료

'프로그래밍 > Spring' 카테고리의 다른 글

[JPA] 외래키 사용  (1) 2024.02.04
[Spring Boot] JPA란?  (1) 2024.01.24