java中Long类型传参校验注解,详解SpringBoot中的参数校验(项目实战)

2023-05-16

Java后端发工作中经常会对前端传递过来的参数做一些校验,在业务中还要抛出异常或者不断的返回异常时的校验信息,充满了if-else这种校验代码,在代码中相当冗长。例如说,用户注册时,会校验手机格式的正确性,用户名的长度等等。虽说前端也可以做参数校验,但是为了保证我们API接口的可靠性,以保证最终数据入库的正确性,后端进行参数校验不可忽视。 Hibernate Validator 提供了一种统一方便的方式,让我们快速的实现参数校验。

Hibernate Validator 使用注解,实现声明式校验。而在实现原理上,也是基于 Spring AOP 拦截,实现校验相关的操作。 javax.validation.constraints 包下,定义了一系列的约束( constraint )注解。文末会贴上一些常用的注解。 如果项目的框架是 spring boot 的话,在 spring-boot-starter-web 中已经包含了 Hibernate-validator 的依赖( 版本<2.3 )。 2.3 以后的版本中 spring-boot-starter-web 已经去除了这个依赖,需要手动引入 Hibernate-validator 依赖,并且有一些变化,因此 2.3.x 的版本暂不研究。本文使用的版本是 2.2.8 。

实战

1、创建实体类

2、创建controller

3、创建全局异常处理器

4、测试

1-200H9135SV18.png

效果符合预期!

@Valid和@Validated

绝大多数场景下,我们使用 @Validated 注解即可。

而在有嵌套校验的场景,我们使用 @Valid 注解添加到成员属性上。

附常用注解

javax.validation.constraints包下

注解

验证的数据类型

说明

@Null

任意类型

验证注解的元素值必须是null

@NotNull

任意类型

验证注解的元素值不是null

@NotBlank

字符串

验证注解的元素值不为空(不为null、去除首位空格后长度大于0)

@NotEmpty

CharSequence子类型、Collection、Map、数组

验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)

@Min(value=值)

数值类型

验证注解的元素值大于等于@Min指定的value值

@Max(value=值)

和@Min要求一样

验证注解的元素值小于等于@Max指定的value值

@DecimalMin(value=值)

和@Min要求一样

验证注解的元素值大于等于@ DecimalMin指定的value值

@DecimalMax(value=值)

和@Min要求一样

验证注解的元素值小于等于@ DecimalMax指定的value值

@Digits(integer=整数位数, fraction=小数位数)

和@Min要求一样

验证注解的元素值的整数位数和小数位数上限

@Size(min=下限, max=上限)

字符串、Collection、Map、数组等

验证注解的元素值的在min和max(包含)指定区间之内,如字符长度、集合大小

@Positive

判断正数

@PositiveOrZero

判断正数或 0 。

@Negative

判断负数。

@NegativeOrZero

判断负数或 0 。

@Past

日期类型

验证注解的元素值(日期类型)比当前时间早

@Future

与@Past要求一样

验证注解的元素值(日期类型)比当前时间晚

@AssertFalse

Boolean

验证注解的元素值是false

@AssertTrue

Boolean

验证注解的元素值是true

@Range(min=最小值, max=最大值)

BigDecimal,BigInteger,CharSequence, byte, short, int, long等原子类型和包装类型

验证注解的元素值在最小值和最大值之间

@Email

字符串

验证注解的元素值是Email,也可以通过regexp和flag指定自定义的email格式

@Pattern(regexp=正则表达式,flag=标志的模式)

字符串

验证注解的元素值与指定的正则表达式匹配

@Valid

任何非原子类型

指定递归验证关联的对象如用户对象中有个地址对象属性,如果想在验证用户对象时一起验证地址对象的话,在地址对象上加@Valid注解即可级联验证

org.hibernate.validator.constraints包下,定义了一系列的约束( constraint )注解。如下:

@Range(min=, max=):被注释的元素必须在合适的范围内。

@Length(min=, max=) :被注释的字符串的大小必须在指定的范围内。

@URL(protocol=,host=,port=,regexp=,flags=):被注释的字符串必须是一个有效的 URL 。

@SafeHtml:判断提交的 HTML 是否安全。例如说,不能包含 javascript 脚本等等。

到此这篇关于详解SpringBoot中的参数校验(项目实战)的文章就介绍到这了,更多相关SpringBoot 参数校验内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://juejin.im/post/5f1fc126e51d4534942e0415

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java中Long类型传参校验注解,详解SpringBoot中的参数校验(项目实战) 的相关文章

随机推荐