代码地址 https://github.com/wheel-organization/wheel 简介 hibernate-validator是Hibernate项目中的一个数据校验框架,是Bean Validation 的参考实现,hibernate-validator除了提供了JSR 303规范中所有内置constra
代码地址
https://github.com/wheel-organization/wheel
简介
hibernate-validator是Hibernate项目中的一个数据校验框架,是Bean Validation 的参考实现,hibernate-validator除了提供了JSR 303规范中所有内置constraint 的实现,还有一些附加的constraint。
使用hibernate-validator能够将数据校验从业务代码中脱离出来,增加代码可读性,同时也让数据校验变得更加方便、简单。
官网地址:http://hibernate.org/validator/
如何使用
项目中已经引入了需要的api,无需重复引入
<dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>2.0.1.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>6.0.16.Final</version> </dependency>
在要校验的POJO上加上以下注解即可
注解
用途
更多功能,如:自定义校验规则、分组校验、关联参数联合校验请查看官网或百度
Dubbo中使用Hibernate Validator校验入参
无需util,Dubbo接口配置上的validation为true即可
在客户端验证参数
<dubbo:reference id="xxxService" interface="xxx.ValidationService" validation="true" />
在服务器端验证参数
<dubbo:service interface="xxx.ValidationService" ref="xxxService" validation="true" />
在代码里校验入参
//obj为包含Hibernate Validator注解的POJO //快速失败模式 ValidResult validResult = ValidationUtil.fastFailValidate(obj); //obj为包含Hibernate Validator注解的POJO //全部校验模式 ValidResult validResult = ValidationUtil.allCheckValidate(obj);
样例
public class ParamTestDTO implements Serializable { private static final long serialVersionUID = 7123882542534668217L; @AssertTrue(message = "Error True") private Boolean testTrue; @AssertFalse(message = "Error False") private Boolean testFalse; @DecimalMax(value = "10", message = "Error StrMax") private String testStrMax; @DecimalMin(value = "1", message = "Error StrMin") private String testStrMin; @Max(value = 10, message = "Error Max") private Integer testMax; @Min(value = 1, message = "Error Min") private Double testMin; @Digits(integer = 2, fraction = 3, message = "Error Dig") private BigDecimal testDig; @Past(message = "Error Past") private Date testPast; @Future(message = "Error Future") private Date testFuture; @Null(message = "Error Null") private String testNull; @NotNull(message = "Error NonNull") private String testNonNull; @Pattern(regexp = "^[0-9]?[0-9]$", message = "Error Pattern") private String testPattern; @Size(min = 1, max = 10, message = "Error Size") private List<String> testSize; @Length(min = 1, max = 10, message = "Error Length") private String testLength; @NotBlank(message = "Error Blank") private String testBlank; @NotEmpty(message = "Error NotEmpty") private String testEmpty; @Range(min = 1, max = 10, message = "Error Range") private String testRange; }
单测:ValidationUtilTest
性能测试
结果如图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。