先上结论:
- @NotEmpty 是一个容易让人产生误解的注解,因为他不是一个 原子注解;
- @NotEmpty 注解作用于string的话,很鸡肋,没有 @NotBlank更简单暴力,容易理解;避免出现空格的问题;空格也没有什么具体业务场景;
- @NotEmpty 作用于list的话也是很鸡肋,不如:@NotNull + @Size 灵活 容易理解;
** 既然这不是一个原子注解,又容易让人产生歧义,混淆,故废弃,拒绝使用此注解 **
作用于string
1.不能为null
2.若是字符串,则不能是空字符,空格可以:
{
"name": " "//空格可以
"name": ""//空字符不可以
}
结论:作用等同于 @NotNull + @Size(min = 1),容易让人产生歧义;难以理解,我们通常直接 对字符串 用 @NotBlank注解更简单直接,@NotBlank的作用:
-
字符串不能为null
-
字符串trim()后也不能等于空,即空字符不行,空格也不行:
{
"name": " "//空格不可以,即trim后不能为空字符
"name": ""//空字符也不可以
}
作用于集合、数组、map、List
-
不能为Null;
-
size() > 0;
效果就是 @NotNull + @Size(min = 1)
不够灵活,比如它 规定 size 比如大于0,就是说只能从 1开始,若我们想 size允许等于0呢,则无法实现;
不如 @NotNull + @Size 组合来的灵活和直接,容易理解,比如:
- @NotNull + @Size(min = 0) 就可以 实现 不为null + 允许为空数组[]的效果;
- @NotNull + @Size(min = 1) 就是 @NotEmpty的效果;