Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Proxy Patter
- Spring Boot
- Effective Java
- NotBlank
- JPA
- 플라이웨이트
- FCM
- springboot
- @ControllerAdvice
- 디자인 패턴
- db
- deleteById
- restTemplate
- Web
- Service Locator
- Item04
- 데이터베이스
- SQL 삽입 공격
- Connection Pool
- 이펙티브 자바
- Firebase
- NotEmpty
- @Valid
- Service Locator 패턴
- multi module
- @SpyBean
- 트랜잭션
- @MockBean
- java
- Effetive Java
Archives
- Today
- Total
NoTimeForDawdling
[Spring Boot] @NotNull, @NotEmtpy, @NotBlank 차이점 본문
API를 요청할 때 request body로 들어는 paramter에 대해 문자열 검증하는 방법으로 @NotNull, @NotEmpty, @NotBlank가 있습니다.
이 3가지 Annotation은 비슷해 보이지만 조금씩 다릅니다. 오늘은 이 3가지 Annotation의 차이점에 대해 확실하게 알고 넘어가 보겠습니다.
해당 포스트에서 사용할 DTO는 다음과 같습니다.
@Getter
@NoArgsConstructor
public class ValidationDto {
@NotNull
private String notNull;
@NotEmpty
private String notEmpty;
@NotBlank
private String notBlank;
}
@NotNull
@NotNull은 말 그대로 null만 허용하지 않고, "", " "는 허용합니다.
즉, 초기화된 String("")이나 공백(" ")을 허용하지 않는다면 사용해선 안됩니다.
Postman을 통해 확인해보겠습니다.
모든 값을 null로 넣어줬습니다. 3가지 Validation 모두 오류가 발생한 것을 볼 수 있습니다.
@NotEmpty
@NotEmty는 null과 ""를 허용하지 않고, " "는 허용합니다.
@NotNull에 ""가 추가된 것입니다.
초기화된 String("")으로 값을 넣어줬습니다.
@NotNull에 대한 Validation은 통과하지만 @NotEmpty와 @NotBlank는 통과하지 못했습니다.
@NotBlank
@NotBlank는 null, "", " "모두 허용하지 않습니다.
공백(" ")으로 값을 넣어줬습니다.
@NotNull, @NotEmpty에 대한 Validation은 통과하지만 @NotBlank는 통과하지 못한 걸 알 수 있습니다.
정리하면 다음과 같습니다.
Null | "" | " " | |
@NotNull | X | O | O |
@NotEmpty | X | X | O |
@NotBlank | X | X | X |
참고
'SpringBoot' 카테고리의 다른 글
[Spring Boot] @MockBean, @SpyBean 알아보기 (0) | 2021.06.22 |
---|---|
[Spring Boot] 이벤트(Event) 사용방법 (0) | 2021.06.17 |
[Spring Boot] Swagger Authorization header 설정 (0) | 2021.05.12 |
[Spring Boot] @ControllerAdvice를 이용한 @Valid Exception Handling (0) | 2021.04.28 |
[Spring Boot] @Valid를 이용한 유효성 검증 (0) | 2021.04.27 |