
🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。
🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。
🎉欢迎 👍点赞✍评论⭐收藏
🔎 SpringBoot 注解领域知识 🔎
| 链接 | 专栏 |
|---|---|
| SpringBoot 注解专业知识学习一 | Java注解专栏 |
| SpringBoot 注解专业知识学习二 | Java注解专栏 |
| SpringBoot 注解专业知识学习三 | Java注解专栏 |
文章目录
- 🏆 学习Java 校验注解之@NotNull、@NotEmpty 和 @NotBlank
-
- 🔎 Java 校验注解 @NotNull、@NotEmpty 和 @NotBlank
-
- 🍁 01、解释一下 @NotNull、@NotEmpty 和 @NotBlank 注解的区别?
- 🍁 02、怎样使用 @NotNull、@NotEmpty 和 @NotBlank 注解验证方法参数?
- 🍁 03、什么情况下应该使用 @NotEmpty,而不是使用 @NotNull 注解?
- 🍁 04、如何在 Spring Boot 中使用 @NotBlank 注解?
- 🍁 05、你有使用 @NotNull、@NotEmpty 或 @NotBlank 注解的实际经验吗?
- 🍁 06、在使用 @NotNull 注解验证数据类型为 Long 的字段时,遇到的问题?
- 🍁 07、如果你要验证一个对象里的属性是否为 null,你会使用哪个注解?
- 🍁 08、在使用 @NotEmpty 注解验证字符串类型的字段时,遇到的问题?
- 🍁 09、你是否知道哪些其他常用的验证注解?
- 🍁 10、为什么使用验证注解可以提高代码质量?
🏆 学习Java 校验注解之@NotNull、@NotEmpty 和 @NotBlank
🔎 Java 校验注解 @NotNull、@NotEmpty 和 @NotBlank
🍁 01、解释一下 @NotNull、@NotEmpty 和 @NotBlank 注解的区别?
当对于字段或方法参数的非空性进行验证时,@NotNull、@NotEmpty 和 @NotBlank 是三个常见的验证注解。
1. @NotNull 注解用于验证 对象 是否为 null,它可以应用于字段和方法参数上。如果被注解的字段为 null,则验证失败。
2. @NotEmpty 注解用于验证 字符串、集合或数组 是否为空。它可以应用于字符串、集合和数组类型的字段和方法参数上。如果被注解的字符串为空字符串 “”,或集合/数组为空,则验证失败。
3. @NotBlank 注解用于验证 字符串 是否为空格或不为空。 注意:它只可以应用于字符串类型的字段和方法参数上 。如果被注解的字符串为空或只包含空格,则验证失败。
三者的主要区别在于验证的对象类型不同。@NotNull 验证对象,@NotEmpty 验证字符串、集合或数组,而 @NotBlank 仅验证字符串。因此,你应该根据验证的对象类型选择合适的注解进行使用。
此外,在使用 @NotEmpty 和 @NotBlank 进行字符串验证时,需要注意它们之间的区别。@NotEmpty 只验证为空,而 @NotBlank 验证的是字符串除去空格后是否还有内容。如果字符串只包含空格,请使用 @NotBlank 验证注解。
| 验证注解 | 作用对象 | 验证内容 | 错误情况 |
|---|---|---|---|
| @NotNull | 字段和方法参数 | 对象是否为 null | 如果被注解的字段为 null,则验证失败 |
| @NotEmpty | 字符串、集合和数组类型的字段和方法参数 | 字符串、集合或数组是否为空 | 如果被注解的字符串为空字符串 “”,或集合/数组为空,则验证失败 |
| @NotBlank | 字符串类型的字段和方法参数 | 字符串是否为空格或不为空 | 如果被注解的字符串为空或只包含空格,则验证失败 |
表格中显示了 @NotNull、@NotEmpty 和 @NotBlank 的区别。这些注解的作用对象、验证的内容以及验证失败的情况有所不同。
需要注意的是,@NotBlank 注解只适用于字符串类型的字段和方法参数,并且也验证空格字符。因此,它在检查表单字段等情况时特别有用。同时,@NotEmpty 验证是否为空,但不验证空格。如果要同时验证空格和空,需要使用 @NotBlank 注解。
下面是 Java 中使用 @NotNull、@NotEmpty 和 @NotBlank 的代码示例:
// 使用 @NotNull 验证参数不为 null
public void exampleMethod(@NotNull String name) {
// 方法内容
}
// 使用 @NotEmpty 验证字符串不为空
public void exampleMethod2(@NotEmpty String name) {
// 方法内容
}
// 使用 @NotBlank 验证字符串不为空或空格
public void exampleMethod3(@NotBlank String name) {
// 方法内容
}
在上面的代码示例中,我们可以看到如何使用 @NotNull、@NotEmpty 和 @NotBlank 进行验证。每个注解都采用简单的方式标注需要进行验证的方法参数或字段。如果不符合验证条件,将抛出异常并中断程序。
另一种使用 @NotEmpty 的方式是使用 Bean Validation API 验证实体对象。下面是示例代码:
import jakarta.validation.constraints.NotEmpty;
public class User {
@NotEmpty
private String name;
public User(String name) {
this.name = name;
}
}
在这个示例中,我们使用 @NotEmpty 注解来标注“name”字段,在使用 Bean Validation API 验证这个实体对象时,它将验证“name”字段是否为空。
当使用这些注解时,可以根据具体的情况和需要进行灵活的配置。以下是更多的使用示例:
1.配合校验框架使用:可以使用流行的校验框架,如 Hibernate Validator 或 Spring Validation,以在 JavaBean 上进行注解驱动的验证。例如,使用 Hibernate Validator 的验证示例:
import jakarta.validation.constraints.NotEmpty;
import org.hibernate.validator.constraints.Length;
public class User {
@NotEmpty
@Length(min = 3, max = 20)
private String username;
public User(String username) {
this.username = username;
}
// Getters and setters
}
在上述示例中,我们使用了 @NotEmpty 注解来验证 username 字段不为空,并使用 @Length 注解来限制 username 字段的长度为 3 到 20 个字符之间。
2.集合和数组验证:@NotEmpty 注解可以用于验证集合或数组是否为空。以下是示例代码:
import jakarta.validation.constraints.NotEmpty;
public class MyClass {
@NotEmpty
private List<String> myList;
public MyClass(List<String> myList) {
this.myList = myList;
}
// Getters and setters
}
在上述示例中,我们使用 @NotEmpty 注解来验证 myList 集合不为空。同样的规则也适用于数组类型。
注意:上述示例中使用的是 jakarta.validation.constraints.NotEmpty 注解,该注解是在 Jakarta Bean Validation 规范中定义的,相当于以前的 javax.validation.constraints.NotEmpty 注解。
总结起来,通过对方法参数、实体对象字段或集合/数组应用 @NotNull、@NotEmpty 和 @NotBlank 注解,可以在开发过程中在关键位置对数据的有效性进行验证和保护。这样可以避免不必要的错误,提高代码的健壮性和可靠性。
🍁 02、怎样使用 @NotNull、@NotEmpty 和 @NotBlank 注解验证方法参数?
@NotNull、@NotEmpty和@NotBlank这些注解都可以用于验证方法参数的有效性。它们的使用方式如下:
1.@NotNull:用于检查参数是否为null。如果参数为null,则验证失败。例如:
public void updateUser(@NotNull String username) {
// 更新用户的逻辑
}
2.@NotEmpty:用于检查字符串、集合或数组类型参数是否为空。如果参数为空或null,则验证失败。例如:
public void createUser(@NotEmpty List<String> permissions) {
// 创建用户的逻辑
}
3.@NotBlank:用于检查字符串类型参数是否为空或只包含空白字符。如果参数为空、null或只含有空白字符,则验证失败。例如:
public void createPost(@NotBlank String content) {
// 创建帖子的逻辑
}
在上述示例中,我们在方法的参数上添加了相应的校验注解,以确保输入的参数满足特定的条件。如果参数不满足校验规则,则验证框架会抛出相应的异常,例如 javax.validation.ConstraintViolationException。
需要注意的是,使用这些校验注解时,需要在方法或类上声明为校验可用,可以使用 @Validated 注解开启方法参数的校验。例如:
@RestController
@Validated
public class UserController {
//...
}
上述示例中,在 UserController 类上添加了 @Validated 注解,以开启方法参数的校验功能。
通过使用这些校验注解,可以方便地进行方法参数的有效性验证,避免无效或不符合要求的参数进入方法的处理逻辑中。这有助于提高代码的可靠性和健壮性。
🍁 03、什么情况下应该使用 @NotEmpty,而不是使用 @NotNull 注解?
@NotEmpty 和 @NotNull 注解是用于进行参数校验的注解,但它们在校验的对象上有所区别。下面是它们的主要区别和适用情况:
1.@NotEmpty:用于检查字符串、集合或数组类型参数是否为空。如果参数为空或null,则验证失败。适用于需要确保参数不为空,且长度或大小必须大于0的情况。例如,要求一个列表不能为null或空,或者要求一个字符串必须包含至少一个非空格字符。
public void createUser(@NotEmpty List<String> permissions) {

本文详细介绍了Java校验注解@NotNull、@NotEmpty和@NotBlank的区别、使用方法及适用场景。阐述了在Spring Boot中使用@NotBlank注解的步骤,还提及使用这些注解时遇到的问题及解决方法,同时列举了其他常用验证注解,说明了使用验证注解可提高代码质量。
最低0.47元/天 解锁文章
1693

被折叠的 条评论
为什么被折叠?



