Python+AI实现电商图片自动化节日化改造
2026/10/27 11:01:50
@NotNull只校验“不为 null”,允许空字符串"";@NotBlank专用于String,要求不为 null、不为"",且trim()后仍有内容。
| 注解 | 适用类型 | 校验规则 | 典型场景 |
|---|---|---|---|
@NotNull | 任意类型 | 值不能为null | Long id、Integer age、对象引用 |
@NotEmpty | String、集合、数组、Map | 不为null,且长度/大小 > 0 | List<String> roles、非空字符串 |
@NotBlank | 仅 String | 不为null,不为"",trim()后长度 > 0 | 用户名、密码、备注等用户输入 |
严格程度:@NotBlank>@NotEmpty>@NotNull
| 输入值 | @NotNull | @NotEmpty | @NotBlank |
|---|---|---|---|
null | ❌ | ❌ | ❌ |
"" | ✅ | ❌ | ❌ |
" "(纯空格) | ✅ | ✅ | ❌ |
"abc" | ✅ | ✅ | ✅ |
publicclassUserRegisterRequest{@NotNull(message="用户ID不能为null")privateLongid;@NotEmpty(message="角色列表不能为空")privateList<String>roles;@NotBlank(message="用户名不能为空或纯空格")privateStringusername;@NotBlank(message="密码不能为空或纯空格")privateStringpassword;}javax.validation.constraints或jakarta.validation.constraints包。@Valid或@Validated使用,否则不会生效。MethodArgumentNotValidException,可配合@ControllerAdvice统一返回错误信息。@NotBlank已经隐含了@NotNull和@NotEmpty的校验,所以字符串字段用@NotBlank就够了,不需要重复加。