spring boot参数验证注解@NotNull、@NotBlank和@NotEmpty区别解析
前言
使用spring boot参数验证是常常会使用@NotNull、@NotBlank和@NotEmpty三个判断是否不为空的注解,中文都有不能为空的意思,大部分使用者都傻傻分清它们之间到底有什么区别。今天就让咱们来一起探索它们之间的不同吧。
说明
| 注解名称 | 功能 |
|---|---|
| @NotNull | 可用于所有类型的字段,判断字段不能为null |
| @NotBlank | 只能用于String类型的字段,判断字段不能为空串或空白(空格或制表符)字符串 |
| @NotEmpty | 可用于String类型和集合类型,用在String字段上时,字段不能为空串;用于集合时,集合不能为null或集合的size不为0 |
共同点:三个注解标注的字段都不能为null
举例
实体User.java
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @Description TODO
* @Author liqinglong
* @DateTime 2024-04-30 11:02
* @Version 1.0
*/
@Data
public class User {
@NotBlank(message = "姓名不为空")
private String userName;
@NotNull(message = "年龄不能为空")
private Integer age;
@NotEmpty(message = "权限列表不能空")
private List<String> rolerList;
}测试类 ValidTest.java
import com.ruoyi.common.exception.ServiceException;
import org.apache.commons.collections.CollectionUtils;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @Description TODO
* @Author liqinglong
* @DateTime 2024-04-30 11:07
* @Version 1.0
*/
public class ValidTest {
public static void main(String[] args) {
// Bean 验证器
ValidatorFactory vf = Validation.buildDefaultValidatorFactory();
Validator validator = vf.getValidator();
User user = new User();
//姓名为空格或制表符
user.setUserName(" ");
//年龄为null
user.setAge(null);
//权限集合的长度为0
List<String> roles = new ArrayList<>();
user.setRolerList(roles);
// 校验的业务对象:user,Bean 类型:User
Set<ConstraintViolation<User>> checkSet = validator.validate(user);
if (CollectionUtils.isNotEmpty(checkSet)) {
// Bean验证不通过
throw new ServiceException(checkSet.stream().map(ConstraintViolation::getMessage).collect(Collectors.joining(",")));
}
}
}运行结果:

其它各种情况,请同学自行测试,测试得出的结论欢迎到评论区留言。
到此这篇关于spring boot参数验证注解@NotNull、@NotBlank和@NotEmpty区别的文章就介绍到这了,更多相关spring boot参数验证注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java中的各种list有什么区别及list和set区别详析
List是Java集合框架中使用频率比较高的一个接口,它的特点是存储的数据是有序的并且数据是可以重复的,这篇文章主要介绍了Java中各种list有什么区别及list和set区别的相关资料,需要的朋友可以参考下2026-06-06
Java AQS(AbstractQueuedSynchronizer)源码解析
AbstractQueuedSynchronizer被称为队列同步器,简称为大家熟知的AQS,这个类可以称作concurrent包的基础。本文将通过剖析源码来看看AQS是如何工作的,感兴趣的可以了解一下2023-02-02


最新评论