Java Bean Validation 注解:@NotEmpty、@NotBlank 和 @NotNull 的区别
1. 概述
Bean Validation 是 Java 提供的一种对 Java Bean 实例的字段或方法参数进行校验的标准机制。它允许开发者使用注解的方式定义验证逻辑,这些注解可以在类、字段或者方法上声明,并且可以被任何实现了 JSR 303/JSR 349 规范的框架(如 Hibernate Validator)所识别和执行。
2. @NotNull
- 含义:该注解用于检查一个字段或参数是否为
null
。如果字段不是null
,则通过验证。 - 适用范围:
- 可以应用于任何类型的字段或方法参数。
- 示例代码:
public class User {@NotNull(message = "Name cannot be null")private String name;// Getter and Setter methods... }
3. @NotEmpty
- 含义:该注解用于检查一个字符串或集合类型(如 List, Set, Map)是否为空。对于字符串,它检查是否为
null
或长度为 0;对于集合类型,它检查是否为null
或大小为 0。 - 适用范围:
- 只能应用于字符串和集合类型的字段或方法参数。
- 示例代码:
public class User {@NotEmpty(message = "Email cannot be empty")private String email;// Getter and Setter methods... }
4. @NotBlank
- 含义:该注解用于检查一个字符串是否为
null
或仅由空白字符组成(即长度为 0 或只包含空格、制表符等)。如果字符串非空且含有非空白字符,则通过验证。 - 适用范围:
- 只能应用于字符串类型的字段或方法参数。
- 示例代码:
public class User {@NotBlank(message = "Password cannot be blank")private String password;// Getter and Setter methods... }
5. 总结
- @NotNull:检查任何类型的对象是否为
null
。 - @NotEmpty:检查字符串或集合类型的对象是否为
null
或为空。 - @NotBlank:检查字符串是否为
null
或仅由空白字符组成。
6. 使用建议
- 当需要验证对象不为
null
时,使用@NotNull
。 - 需要确保字符串或集合类型非空时,使用
@NotEmpty
。 - 如果需要确保字符串不仅非空而且含有非空白字符时,使用
@NotBlank
。