Java注解之@NotBlank,一文掌握@NotBlank注解知识(1)

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

在这里插入图片描述

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。
🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。
🎉欢迎 👍点赞✍评论⭐收藏

🔎 SpringBoot 注解领域知识 🔎

链接 专栏
SpringBoot 注解专业知识学习一 Java注解专栏
SpringBoot 注解专业知识学习二 Java注解专栏
SpringBoot 注解专业知识学习三 Java注解专栏

🏆 学习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) {
   
   
    
本文章已经生成可运行项目
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值