Validation이란 ?
Validation은 클라이언트가 전송한 데이터를 서버가 받아 처리하기 전에 유효한 값인지 검사하는 과정이다.
- 잘못된 값이 들어오면 오류를 반환하고 처리 흐름을 막는다.
- 이를 통해 애플리케이션의 안정성과 신뢰성을 높일 수 있다.
Spring에서 Validation 흐름
- 클라이언트가 데이터를 `@RequestBody` , `@RequestParam` ,`@PathVariable` 등을 통해 전송한다.
- 컨트롤러에서 `@Valid` 또는 `@Validated` 어노테이션을 붙여 유효성 검사를 실행한다.
- 검사 통과하면 서비스 로직에서 실행이 되며, 검사에 실패하면 `MethodArgumentValidException` 등의 예외가 발생하고, `@ControllerAdvice` 나 `@ExceptionHandler` 로 이를 잡아 적절히 응답을 반환한다.
- DTO 또는 엔티티 내부에 `@NotNull` ,`@NotEmpty` , `@NotBlank`, `@Size` . `@Pattern` 등의 제약 어노테이션을 사용해서 필드 수준의 유효성 조건을 정의한다.
Validation 사용하기
1) 의존성 추가
Spring Boot에서는 기본적으로 `spring-boot-starter-validation` 을 추가해야 한다.
implementation 'org.springframework.boot:spring-boot-starter-validation'
2) 필드 제약 어노테이션
1. @NotNull
- 필드 값이 null이면 안 되는 경우에 사용
- 문자열뿐 아니라 숫자, 객체 등 모든 타입에 적용 가능
public record UserCreateRequest(
@NotNull
String username
) {}
null은 안되고 빈 문자열을 허용한다.
2. @NotEmpty
- 문자열, 컬렉션, 배열 등에 적용 가능
- null이 아니고 길이가 0이 아니어야 함.
public record UserCreateRequest(
@NotEmpty
String username
) {}
공백 문자열은 허용하지만, null 또는 길이 0 은 안된다.
3. @NotBlank
- 문자열 전용
- null, 빈 문자열, 공백 문자열 모두 허용하지 않음
public record UserCreateRequest(
@NotBlank
String username
) {}
빈 문자열, 공백, null 모두 금
어노테이션 허용 값 설명
| @NotNull | 빈 문자열 허용 | 단순 null 체크 |
| @NotEmpty | 공백 문자열 허용 | null 또는 길이 0 체크 |
| @NotBlank | 허용 없음 | null, 길이 0, 공백 모두 체크 |
빈 문자열과 공백 문자열의 차이
빈 문자열은 길이가 0인 문자열로 아무 문자도 없다. `""`가 예시이다.
공백 문자열은 길이는 1이상, 문자이지만 공백 문자만 있는 경우이다. `" "` , `"\t"` , `"\n"` 이 다음 예시에 해당한다.
'Spring' 카테고리의 다른 글
| [Spring] 임베디드 타입 (@Embeddable, @Embedded) (0) | 2025.11.10 |
|---|---|
| [Spring] Lombok 이해하기 - @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor (0) | 2025.11.04 |
| [Spring] DTO 활용 패턴 - toEntity(), from() 정적 팩토리 메서드 (0) | 2025.10.13 |
| [Spring] 외부 API 연동하기 (RestTemplate vs. WebClient vs. OpenFeign) (0) | 2025.10.05 |
| [Spring] N+1 문제 (0) | 2025.10.03 |
