@NotNull, @NotEmpty, @NotBlank 의 차이 !

현주·2023년 4월 13일
0

프로젝트에서 유효성 검사를 위해 사용했던 세 가지 애너테이션들에 대해 알아보려고 합니다!

자바에서 @NotNull, @NotEmpty, @NotBlank는 모두 유효성 검증(validation)을 위해 사용되는 애너테이션입니다.

이 세가지가 비슷하지만 차이가 분명히 있기 때문에, 잘 알아야 용도에 알맞게 사용할 수 있습니다.


✔ @NotNull

The annotated element must not be null. Accepts any type.

@NotNull 애너테이션은 말 그대로 null 값만 허용하지 않습니다.

매개변수, 필드 또는 메서드 반환 값이 Null인지 체크하는 데 사용되고,

NullPointerException이 발생하지 않도록 하는 데 사용됩니다.

따라서 "" / " "와 같은 빈문자열이 입력되었을 경우에는 허용하게 됩니다.

@NotNull
String str1 = null;   // false

@NotNull
String str2 = "";   // true

@NotNull
String str3 = " ";   // true

✔ @NotEmpty

The annotatd element must not be null nor empty.
Supported types are :

  • CharSequence (length of character sequence is evaluated)
  • Collection (collection size is evaluated)
  • Map (map size is evaluated)
  • Array (array length is evaluated)

@NotEmpty 애너테이션은 문자열 / 컬렉션 / 맵 / 배열이 비어 있지 않아야 함을 나타낼 경우 사용됩니다.

객체에 적어도 하나 이상의 요소가 포함되어야 하므로 null과 ""를 허용하지 않습니다.

다만 " "의 입력은 허용됩니다.

@NotEmpty
String str1 = null;   // false

@NotEmpty
String str2 = "";   // false

@NotEmpty
String str3 = " ";   // true

✔ @NotBlank

The annotated element must not be null and must contain at least one non-whitespace character. Accepts CharSequence.

@NotBlank 애너테이션은 세가지 애너테이션 중 가장 강도가 강한 것으로

null, "", " " 모두 허용하지 않습니다.

@NotBlank
String str1 = null;   // false

@NotBlank
String str2 = "";   // false

@NotBlank
String str3 = " ";   // false

[참고 1] https://www.baeldung.com/java-bean-validation-not-null-empty-blank
[참고 2] https://javaee.github.io/javaee-spec/javadocs/javax/validation/constraints/package-summary.html

0개의 댓글