SpringBoot
[Spring Boot] @NotNull, @NotEmtpy, @NotBlank 차이점
Room_Energy
2021. 5. 14. 15:59
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 |