简介
在Web开发过程中,接口传参往往需要进行参数校验。最普通的方式是手动编码,对接口传参一个一个地进行手动校验,代码臃肿编写费时费力。
Javax.validation包则对参数校验规定了一批通用的API,通过接入实现以及编写一套代码及规定参数的格式范围取值等,就能够摆脱编写臃肿的代码,解放生产力。
本文接下去的内容则介绍一种简单的参数校验工具封装。
使用
引入依赖
新建maven工程,引入必要依赖项,如下:
1 | <dependency> |
这里引入的是 javax.validation 的 hibernate-validator 实现。
核心代码
获取 Validator
1 | javax.validation.Validator validator = javax.validation.Validation.byProvider(org.hibernate.validator.HibernateValidator.class).configure().failFast(false).buildValidatorFactory().getValidator(); |
进行参数校验
1 | public static <T> ValidateResult<T> validate(T source) { |
其中,ValidateResult 定义如下
1 | public class ValidateResult<T> { |
其中,PropertyError 定义如下
1 | public class PropertyError { |
测试结果
编写测试代码,定义参数类型TestModel并规定参数约束条件,如下:
1 | import javax.validation.Valid; |
其中,@NotNull,@NotEmpty,@Size 等注解为 javax.validation 定义的参数约束条件。
编写测试代码,创建参数实例并进行校验,打印结果,如下:
1 | @Test |
运行结果:
1 | 十月 28, 2019 10:23:41 上午 org.hibernate.validator.internal.util.Version <clinit> |