NotNull只校验“不为 null”允许空字符串NotBlank专用于String要求不为 null、不为且trim()后仍有内容。核心区别对比注解适用类型校验规则典型场景NotNull任意类型值不能为nullLong id、Integer age、对象引用NotEmptyString、集合、数组、Map不为null且长度/大小 0ListString roles、非空字符串NotBlank仅 String不为null不为trim()后长度 0用户名、密码、备注等用户输入严格程度NotBlankNotEmptyNotNull不同输入值的校验结果输入值NotNullNotEmptyNotBlanknull❌❌❌✅❌❌ 纯空格✅✅❌abc✅✅✅代码示例publicclassUserRegisterRequest{NotNull(message用户ID不能为null)privateLongid;NotEmpty(message角色列表不能为空)privateListStringroles;NotBlank(message用户名不能为空或纯空格)privateStringusername;NotBlank(message密码不能为空或纯空格)privateStringpassword;}使用要点这些注解来自javax.validation.constraints或jakarta.validation.constraints包。必须配合Valid或Validated使用否则不会生效。校验失败通常抛出MethodArgumentNotValidException可配合ControllerAdvice统一返回错误信息。NotBlank已经隐含了NotNull和NotEmpty的校验所以字符串字段用NotBlank就够了不需要重复加。
阅读完成 · 觉得有帮助?