Hibernate-validator校验框架

本文档详细介绍了Hibernate-validator校验框架的使用,包括工作模式、配置、校验功能、Validator的使用方法及各个校验功能的开发指南。通过内置注解、对象图级联校验、校验组等实现复杂校验需求,同时提供了自定义校验注解和智能默认校验组功能,便于根据对象状态调整校验策略。
摘要由CSDN通过智能技术生成

1. 前言

Validator开发者使用手册,适用后台校验功能的开发参考。文档中提到的功能,都是经过严谨测试验证过的,保证可用,请开发人员放心设计和开发。

1.1. 背景

在我们日常后台的开发中,涉及到很多的字段验证,一般普通的验证框架就基本上可以满足日常的开发需求,但有一些情况,这些普通的验证框架无法达到要求,例如,现在有一个Segment类,里面有一个属性deptCity,但这个类同时用于多个接口中,比如说用到选取可利用航班以及选取目的航班中,在选取可利用航班这个接口中,deptCity是必输项,格式为[A-Z]{3},但是选取目的航班接口中,deptCity不是必输项,这时候问题就出现了,我们必须对验证的属性进行分组,于是就产生了我们的Validator验证框架。当然,我们的验证框架不仅仅只提供了分组的功能,欲知后事,请看下文分解。

1.2. 联系我们

在开发中遇到的任何问题,或者需要技术支持的地方,可以联系我们:

924580006@qq.com

2. 参考文档

Hibernate Validator - 5.1.0 - 英文版.pdf

3. 概览

3.1. 工作模式和配置模式

Validator提供两种工作模式:

1、普通模式

2、快速失败返回模式

默认的工作模式为快速失败返回模式,一旦发现校验失败项,立即返回。普通模式在测试时期可以使用,可以对全部的校验项进行完整的校验(校验组序列,以及基于校验组序列的其他配置无效),通过修改配置文件中的校验模式,从而实现工作模式的自由切换。开发人员无需关心其中的原理和过程。

两种配置模式:AnnotationXml文件(此处略)

推荐使用Annotation注解模式。

工作模式配置如下:

validator.fail_fast:快速失败返回模式(只要有一个验证失败,则返回异常)

validator.normal:普通模式(会校验完所有的属性,然后返回所有的验证失败信息)

3.2. 校验功能

Validator校验框架按照Bean Validation的规范,使用了Hibernate Validatior框架。当前通过测试验证的可以支持的功能有:

1、内置注解校验

2、对象图级联校验

3、校验组分组校验

4、校验组序列

5、自定义默认校验组功能

6、自定义智能默认校验组功能

7、自定义校验注解

8、类校验——类属性的关联校验

下面将首先给出各个场景的具体的开发方法,而后介绍各个功能的应用场景,供大家定位自己的需求适用于哪几种场景的整合。

此外,框架还内嵌了一些非法校验的功能,比如输入的校验对象为null,或者指定的对象的属性值错误,都会自行抛出异常。

4. Validator的使用方法

4.1. Validatorjar

目前,Validator的版本为2.0.0,后面可能会涉及到版本的更新,具体版本请和开发人员联系。原始工程为Maven工程,使用的时候,只需要导入Validator依赖的pom文件以及进行简单的配置即可。

<dependency>
		<groupId>com.chhliu.common</groupId>
		<artifactId>validate</artifactId>
		<version>2.0.0</version>
</dependency>

4.2. Validator的配置文件

配置文件可以从jar包里面获取,或者直接找开发人员获取皆可,使用的时候,直接加入类路径下即可。附件部分给出了Validator依赖的pom文件。配置文件如下:

<bean id="baseValidator" class="com.chhliu.common.validator.BaseValidator">
	<property name="validatorMode">
        <!-- 校验器的工作模式:
		validator.fail_fast:快速失败返回模式(只要有一个验证失败,则返回异常)
		validator.normal:普通模式(会校验完所有的属性,然后返回所有的验证失败信息)
        -->
		<value>validator.normal</value>
	</property>
</bean>

4.3. Validator接口

使用Validator的校验框架非常的简单,只需要注入Validator接口即可:

@Autowired
private Validator validator;

4.4. Validator中的方法

Validator提供了6个校验接口供开发人员使用:

1、<T> void validate(T object) throws Exception
		用途:校验一个对象的默认校验组的属性。
2、<T> void validate(T object, Class<?>... groups) throws Exception
		用途:校验一个对象的指定的一个或多个校验组的属性。
3、<T> void validateProperty(T object, String propertyName) throws Exception
		用途:校验一个对象的默认校验组的一个指定的属性值。
4、<T> void validateProperty(T object, String propertyName, Class<?>... groups) throws Exception
		用途:校验一个对象指定校验组中的一个指定的属性值。
5、<T> void validateValue(Class<T> beanType, String propertyName, Object value) throws Exception
		用途:校验一个value是否符合指定类的默认校验组下的某一个属性值。
6、<T> void validateValue(Class<T> beanType, String propertyName, Object value, Class<?>... groups) throws Exception
		用途:校验一个value是否符合指定类的指定校验组下的某一个属性值。

4.5. 测试类

大家可以从工程源码的测试目录中,找到测试类,所有的测试类都可以正常运行,并加入了详细的注释说明。

5. 各个校验功能的开发指南

本章节提供了各种校验功能具体的开发方法,基本能够满足开发人员所有 的校验需求。(所有的实体类省略了getset方法)

5.1. 内置注解校验

适用场景:简单的单属性的校验。

内置的校验注解共分为三种:Bean Validation内置的校验注解和Hibernate Validator拓展的校验注解以及框架自带的校验注解。推荐大家首先考虑使用这些注解,简单易用。

使用方法:

public class RangeModel {
	@Length(min=5, max=17)
	private String length;
	
	@Size(min=1, max=3)
	private String age;
	
	@Range(min=150,max=250)
	private int high;

5.1.1. Bean Validator内置的注解

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值