@NotEmpty, @NotNull, @NotBlank는 Spring Boot에서 빈 값이나 null 값에 대한 유효성 검사를 할 때 사용하는 제약 조건 어노테이션입니다. 각각의 차이점을 이해하기 위해 어떤 값을 허용하고, 허용하지 않는지 살펴보겠습니다. 🙂
@NotNull

@NotNull은 필드 값이 null이 아니어야 하는 어노테이션입니다.
- 허용되지 않는 값
null - 허용되는 값
"" 빈 문자열, [] 빈 컬렉션 등 - 적용대상
모든 객체 타입(String, List, Map 등)
사용 예시는 아래와 같습니다.
@NotNull
private String name;
@NotEmpty

@NotEmpty는 필드 값이 null이 아니면서, 길이가 0이 아니어야 하는 어노테이션입니다.
- 허용되지 않는 값
null, "" 빈 문자열, [] 빈 컬렉션 등 - 허용되는 값
길이가 1 이상인 문자열, 요소가 하나 이상인 컬렉션 등 - 적용대상
문자열(String), 컬렉션(Collection), 배열(Array) 등
사용 예시는 아래와 같습니다.
@NotEmpty
private String address; // null이나 빈 문자열("")이면 안됨
@NotEmpty
private List<String> items; // null이나 빈 리스트([])면 안됨
@NotBlank

@NotBlank는 필드 값이 null이 아니고, 길이가 0이 아니며, 공백만으로 이루어지지 않아야 하는 어노테이션입니다.
- 허용되지 않는 값
null, "" 빈 문자열, " " 공백만 포함된 문자열 등 - 허용되는 값
공백이 아닌 문자를 포함하는 문자열 - 적용 대상
문자열(String) 타입만
예시는 아래와 같습니다.
@NotBlank
private String title; // null, 빈 문자열(""), 공백 문자열(" ")이면 안됨
정리
| @NotNull | 값이 null이 아니기만 하면 됨. |
| @NotEmpty | 값이 null이 아니면서 길이가 0이 아니어야 함.(빈 문자열, 빈 컬렉션 허용 안 됨) |
| @NotBlank | 값이 null이 아니면서 길이가 0이 아니고, 공백 문자만으로 이루어지지 않아야 함. |
이 세 가지를 적절히 조합하여 사용하면, 입력 값에 대한 유효성 검사를 더 엄격하게 할 수 있습니다.
예를 들어, 문자열의 경우 @NotBlank를 사용하여 null, 빈 값, 공백 문자열을 모두 방지할 수 있습니다.
'Backend > Spring' 카테고리의 다른 글
| [Spring] HikariCP란? (1) | 2024.09.27 |
|---|---|
| [Spring] Bean Scope(빈 스코프) 란? (0) | 2024.09.21 |
| [Spring] AOP에 @EnableAspectJAutoProxy는 왜 필요할까? (0) | 2024.09.07 |
| Spring Boot에서 WireMock을 사용해서 테스트하기 (0) | 2024.08.30 |
| Failed to validate connection 해결하기 (0) | 2024.08.17 |