[Spring Boot] 유효성 검사(Validation)

2025. 2. 27. 20:59· BE/Spring Boot
목차
  1. Validation 적용 방법
  2. @Valid 사용
  3. Validation 어노테이션 정리
  4. ✅ 문자열 관련 유효성 검사
  5. ✅ 숫자 관련 유효성 검사
  6. ✅ 날짜 관련 유효성 검사
  7. ✅ 이메일 형식 검사
  8. ✅ 정규식 검사
  9. 예제: 회원가입 DTO 유효성 검사
728x90

스프링에서 유효성 검사는 javax.vaildation 패키지의 어노테이션을 활용해서 간편하게 적용할 수 있다. 

회원가입, 게시글 작성 등에서 입력값이 올바른지 확인하는 과정에서 Validation을 통해 유효성 검사를 한다.

 


Validation 적용 방법

@Valid 사용

@Valid 어노테이션을 이용해 컨트롤러에서 DTO의 유효성을 검사한다.

 

DTO에 선언된 검증 조건을 자동으로 확인한다.
만약 유효성 검사에 실패하면 자동으로 400 Bad Request 에러가 발생한다.

@RestController
@RequestMapping("/user")
public class UserController {
@PostMapping("/signup")
public void signup(@Valid @RequestBody UserDto.SignupReq dto) {
System.out.println(dto.getEmail());
System.out.println(dto.getPassword());
System.out.println(dto.getName());
}
}

 

 

 


Validation 어노테이션 정리

 

✅ 문자열 관련 유효성 검사

@NotNull null만 허용하지 않음 ("", " " 가능)
@NotEmpty null과 ""(빈 문자열) 허용 안 함 (" " 가능)
@NotBlack null과 ""(빈 문자열), " "(공백) 모두 허용 안 함
@Size(min=5, max=10) 문자열의 길이를 5~10 사이로 제한

 

@Size(min=8, max=20, message = "비밀번호는 8글자 이상 20글자 이하로 입력해주세요.")
private String password;

 

 


✅ 숫자 관련 유효성 검사

@Min(10) 최소 10 이상의 값만 허용
@Max(100) 최대 100 이하의 값만 허용
@Positive 0을 제외한 양수만 가능
@PositiveOrZero 0과 양수 가능
@Negative 0을 제외한 음수만 가능
@NegativeOrZero 0과 음수 가능

 

 

@Min(18) @Max(99)
private int age;

 


✅ 날짜 관련 유효성 검사

@Future 현재 시간보다 미래만 허용
@FutureOrPresent 현재 또는 미래만 허용
@Past 현재 시간보다 과거만 허용
@PastOrPresent 현재 또는 과거만 허

 

@Future(message = "예약 날짜는 미래여야 합니다.")
private LocalDate reservationDate;

 

 


✅ 이메일 형식 검사

@Email 이메일 형식만 허용 (test@example.com)

 

 


✅ 정규식 검사

@Pattern(regexp = "정규표현식") 특정 형식의 문자열만 허용

 

@Pattern(regexp = "^[ㄱ-ㅎ가-힣]+$", message = "이름은 한글만 입력 가능합니다.")
private String name;

 

 


예제: 회원가입 DTO 유효성 검사

@Getter
public static class SignupReq {
@Email(message = "올바른 이메일 형식을 입력해주세요.")
@NotBlank(message = "이메일은 필수 입력 사항입니다.")
private String email;
@Size(min = 8, max = 20, message = "비밀번호는 8~20자 사이여야 합니다.")
private String password;
@Pattern(regexp = "^[ㄱ-ㅎ가-힣]+$", message = "이름은 한글만 입력 가능합니다.")
private String name;
@Min(18) @Max(99)
private int age;
@Future(message = "예약 날짜는 미래여야 합니다.")
private LocalDate reservationDate;
}

 

 

 

728x90
저작자표시 비영리 변경금지 (새창열림)

'BE > Spring Boot' 카테고리의 다른 글

[Spring Boot] 로컬 환경에 파일 업로드 (multipart)  (0) 2025.03.03
[Spring Boot] OAuth2 소셜 로그인 (카카오, 구글)  (0) 2025.03.01
[Spring Boot] 환경변수 설정 (IntelliJ에서 설정)  (0) 2025.02.25
[Spring Boot] 페이지네이션(Pagination) 적용  (0) 2025.02.25
[Spring Boot] DataSource로 DB 이중화 (Master - Slave)  (1) 2025.02.20
  1. Validation 적용 방법
  2. @Valid 사용
  3. Validation 어노테이션 정리
  4. ✅ 문자열 관련 유효성 검사
  5. ✅ 숫자 관련 유효성 검사
  6. ✅ 날짜 관련 유효성 검사
  7. ✅ 이메일 형식 검사
  8. ✅ 정규식 검사
  9. 예제: 회원가입 DTO 유효성 검사
'BE/Spring Boot' 카테고리의 다른 글
  • [Spring Boot] 로컬 환경에 파일 업로드 (multipart)
  • [Spring Boot] OAuth2 소셜 로그인 (카카오, 구글)
  • [Spring Boot] 환경변수 설정 (IntelliJ에서 설정)
  • [Spring Boot] 페이지네이션(Pagination) 적용
셰욘
셰욘
셰욘
seiyeon
셰욘
전체
오늘
어제
  • 분류 전체보기 (174)
    • 알고리즘 (46)
      • 프로그래머스 (2)
      • 백준 (37)
      • 문제 유형 (7)
    • CS (41)
      • Linux (6)
      • DB (15)
      • 자료구조 (3)
      • OOP (2)
      • 아키텍처 (0)
    • BE (42)
      • Java (9)
      • Spring Boot (32)
    • FE (18)
      • Next.js (1)
      • JavaScript (5)
      • Vue.js (7)
      • Web (0)
    • 배포 (5)
    • 회고 (18)
      • BEYOND SW 캠프 (18)
    • 기타 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 블로그 관리

공지사항

인기 글

태그

  • be
  • DP
  • 리눅스
  • db
  • js
  • dfs
  • 백준
  • 백트래킹
  • fe
  • 자료구조
  • 우선순위 큐
  • spring boot
  • 그리디
  • Gateway
  • 실습
  • web
  • 구현
  • 오블완
  • 회고
  • vue
  • cs
  • 티스토리챌린지
  • Java
  • AWS
  • 트리
  • 알고리즘
  • bfs
  • 주간회고
  • 프로그래머스
  • 네트워크

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.v4.2.1
셰욘
[Spring Boot] 유효성 검사(Validation)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.