Spring Validation
Spring Validation
Spring 为了给开发者提供便捷,对 hibernate validation 进行了二次封装,显示校验 validated bean 时,可以使用 spring validation 或者 hibernate validation。
注解
JSR 提供的校验注解:
注解 | 说明 |
---|---|
@Null | 被注释的元素必须为 null |
@NotNull | 被注释的元素必须不为 null |
@AssertTrue | 被注释的元素必须为 true |
@AssertFalse | 被注释的元素必须为 false |
@Min(value) | 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 |
@Max(value) | 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 |
@DecimalMin(value) | 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 |
@DecimalMax(value) | 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 |
@Size(max=, min=) | 被注释的元素的大小必须在指定的范围内 |
@Digits (integer, fraction) | 被注释的元素必须是一个数字,其值必须在可接受的范围内 |
@Past | 被注释的元素必须是一个过去的日期 |
@Future | 被注释的元素必须是一个将来的日期 |
@Pattern(regex=,flag=) | 被注释的元素必须符合指定的正则表达式 |
Hibernate Validator 提供的校验注解:
注解 | 说明 |
---|---|
@NotBlank() | 验证字符串非 null,且长度必须大于 0 |
被注释的元素必须是电子邮箱地址 | |
@Length(min=,max=) | 被注释的字符串的大小必须在指定的范围内 |
@NotEmpty | 被注释的字符串的必须非空 |
@Range(min=,max=,message=) | 被注释的元素必须在合适的范围内 |
首先定义 validated bean:
在 Controller 中使用:
- @Validated:可以用在类型、方法和方法参数上。但是不能用在成员属性(字段)上,且提供分组功能
- @Valid:可以用在方法、构造函数、方法参数和成员属性(字段)上
如果有多个参数需要校验,形式可以如下,即一个校验类对应一个校验结果:
分组校验
如果同一个类,在不同的使用场景下有不同的校验规则,那么可以使用分组校验。
在 Controller 中使用,注意使用分组功能必须使用 @Validated
注解:
验证方式
验证请求体
验证请求体(RequestBody),需要验证的参数上加上了 @Valid
注解,如果验证失败,它将抛出 MethodArgumentNotValidException
。默认情况下,Spring 会将此异常转换为 HTTP Status 400(错误请求)。
Controller:
ExceptionHandler:
验证请求参数
一定一定不要忘记在类上加上 Validated
注解了,这个参数可以告诉 Spring 去校验方法参数。
Controller:
ExceptionHandler:
验证 Service 方法
此外还可以验证任何 Spring 组件的输入,而不是验证控制器级别的输入,我们可以使用 @Validated
和 @Valid
注释的组合来实现这一需求。
一定一定不要忘记在类上加上 Validated 注解了,这个参数可以告诉 Spring 去校验方法参数。
自定义 Validator
验证枚举值
主要实现:
Flag
FlagValidator
使用:
验证范围值
需求:Person 类有一个 region 字段,region 字段只能是 China、China-Taiwan、China-HongKong 这三个中的一个。
使用:
校验电话号码
使用:
参考文章:
使用 spring validation 完成数据后端校验
spring-bean-validation
金点网络-全网资源,一网打尽 » Spring Validation
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
- 是否提供免费更新服务?
- 持续更新,永久免费
- 是否经过安全检测?
- 安全无毒,放心食用