@NotNull,@NotEmpty和@NotBlank使用和区别
实际上关于参数校验我们经常会遇到@NotNull,@NotEmpty和@NotBlank,几乎涉及到校验的工具包都会有它们的身影不管是Hibernate工具包还是Apache的校验工具包或者其他常用的工具包都会出现,有时候感觉这几个是差不多可以互相替换的。那他们具体的使用场景和区别是什么呢?
一 校验要求
NotNull
NotNull不能为null,但可以为empty,没有Size的约束,比如说
ArrayList list = new ArrayList();
这个list它不是null但size为0,它是可以通过校验的
NotNull的源码
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)
@Repeatable(List.class)
@Documented
@Constraint(validatedBy = { })
public @interface NotNull {String message() default "{javax.validation.constraints.NotNull.message}";Class<?>[] groups() default { };Class<? extends Payload>[] payload() default { };/*** Defines several {@link NotNull} annotations on the same element.** @see javax.validation.constraints.NotNull*/@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })@Retention(RUNTIME)@Documented@interface List {NotNull[] value();}
}
NotEmpty
NotEmpty实际上 要比NotNull限制的严格一点,就是不仅不是null,长度为0的也不可以
范围:String类,Collection、Map、数组,是不能为null或者长度为0的(String、Collection、Map
的isEmpth()方法)
实际上我们可以通过源码的注释既能看到范围(CharSequence,Collection,Map,Array)
以下是Apache的源码
/*** The annotated element must not be {@code null} nor empty. Supported types are:* <ul>* <li>{@code CharSequence} (length of character sequence is evaluated)</li>* <li>{@code Collection} (collection size is evaluated)</li>* <li>{@code Map} (map size is evaluated)</li>* <li>Array (array length is evaluated)</li>* </ul>** @author Emmanuel Bernard* @author Hardy Ferentschik** @since 2.0*/
@Documented
@Constraint(validatedBy = { })
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)
@Repeatable(List.class)
public @interface NotEmpty {String message() default "{javax.validation.constraints.NotEmpty.message}";Class<?>[] groups() default { };Class<? extends Payload>[] payload() default { };/*** Defines several {@code @NotEmpty} constraints on the same element.** @see NotEmpty*/@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })@Retention(RUNTIME)@Documentedpublic @interface List {NotEmpty[] value();}
}
NotBlank
NotBlank要求的要比NotEmpty跟严格一些但是校验的范围也要更窄一些,只能限定String,所以不要在集合上数组类型的参数添加@NotBlank校验。
NotBlank只用于String,不能为null且trim()之后size>0
@NotNull,@NotEmpty和@NotBlank使用和区别相关推荐
- @NotNull, @NotEmpty和@NotBlank之间的区别及示例
三者之间的区别 `@NotNull:` CharSequence, Collection, Map 和 Array 对象不能是 null, 但可以是空集(size = 0). `@NotEmpty:` ...
- Spring Boot req中@NotNull, @NotEmpty和@NotBlank之间的区别是什么?
简述三者区别 @NotNull://CharSequence, Collection, Map 和 Array 对象不能是 null, 但可以是空集(size = 0). @NotEmpty://Ch ...
- @NotNull, @NotEmpty和@NotBlank之间的区别是什么?
首先是简要描述: [java] view plain copy print ? @NotNull://CharSequence, Collection, Map 和 Array 对象不能是 null, ...
- 【Java用法】@NotEmpty、@NotBlank、@NotNull注解的使用方法与区别
以下三个注解均是 javax.validation.constraints 包下的,用于属性上的: @NotEmpty.@NotBlank.@NotNull三种注解的区别 @NotEmpty:用在集合 ...
- 常用校验注解@NotEmpty,@NotBlank,@NotNull,@Valid,@Validated用法区别,以及搭配 BindingResult使用,嵌套验证等《使用|CSDN创作打卡》
文章目录 一.常用注解@NotEmpty,@NotBlank,@NotNull介绍 二.@Valid与@Validated的使用与区别 2.1@Valid与@Validated区别: 2.2嵌套验证 ...
- @NotNull、@NotEmpty和@NotBlank的区别
@NotNull.@NotEmpty和@NotBlank的区别 @NotNull 不能为null,但可以为empty,没有Size的约束. @NotBlank 只能用于String,不能为空且trim ...
- Spring中@NotEmpty、@NotBlank、@NotNull 区别和使用
1:引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>sp ...
- notempty注解属于哪个依赖_Spring注解 @NotBlank,@NotNull,@NotEmpty三者之间的区别
简述三者区别 @NotNull://CharSequence, Collection, Map 和 Array 对象不能是 null, 但可以是空集(size = 0). @NotEmpty://Ch ...
- @NotNull和@NotEmpty和@NotBlank区别
1.@NotNull:不能为null,但可以为empty (""," "," ") 2.@NotEmpty:不能为null,而且长度必须大于 ...
最新文章
- 【SpringMVC】概述
- 深入理解乐观锁与悲观锁
- 11. mysql锁机制_深入探讨MySQL锁机制
- lecture3-线性神经元和算法
- Mysql+Heartbeat+Drbd生产环境高可用部署若干问题解惑
- 二维列表的len_基于Voronoi二维多晶体的衍生脚本操作
- 数字信号处理——DFT的一些理解
- tomcat xjar 加密_XJar Spring Boot JAR 安全加密运行工具
- linux 终端 画圆,Linux Bash Shell快速入门
- MTK:socket通信
- C++基础:造成多态性的原因是什么?
- mysql表的默认所有者_MySQL数据库基本管理-001
- DPDK X710 DDP PPPoE 实践
- MATLAB拟合函数使用说明
- linux 基准测试,技术|如何基准测试 Linux PC 的性能?
- 20190603复盘
- 时间、日期的一些用法
- 126篇殿堂级深度学习论文分类整理,从入门到应用
- PLSql连接Oracle时提示TNS:无监听程序的解决方法
- 关于pr扩展是灰色的问题
热门文章
- 无法被计算机取代的工作,机器人无法取代的职业有哪些
- 计算机网络设备 ppt,计算机网络基础-计算机网络硬件设备.ppt
- android按钮好看的样式
- 父子组件通信,父类调用子类方法
- 1000套物联网 电子 电气毕业设计论文及相关学习资料
- win10系统cmd模式下输入python弹出Windows应用商店 解决方法
- 基于SSM的在线书城网站【附源码】
- 控制PowerPoint课件中Flash歌曲的播放
- windows_网络重置_重置网络_命令
- 2k系列服务器年数,《NBA 2K19》国行版尝鲜 稳定的服务器体验太棒了