验证框架使用说明
功能点说明
1.支持所有hibernate-validate注释(不建议使用).
2.支持自定义校验,自定义错误信息
3.支持指定几个字段校验,其他字段不校验.
4.支持多个字段,混合规则校验.
设计初衷
1.非空校验,包含对象和字符串的判断.
2.复杂校验,可以自定义,并且独立于业务代码之外.
3.一个字段可以支持多种校验规则.
maven依赖
jdk版本:1.7
spring版本:4.2.5.RELEASE
springboot版本:1.3.3.RELEASE
jar包版本:
<dependency>
<groupId>com.bruce.tool</groupId>
<artifactId>tool-validate-hibernate</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
使用样例-非空校验
在类的属性,或者方法的参数上增加@Function注解;
标识当前属性或者参数,有非空校验逻辑:
public class Return implements Serializable {
@Function
private Integer id;
@Function
private String no;
}
非空校验,支持字符串和非字符串的数据对象(非封装类型的基础数据类型,不支持非空校验)
使用样例-自定义校验
使用代码:
public class Return implements Serializable {
@Function
private Integer id;
@Function(value = Email.class,message = Email.ERROR)
private String email;
}
使用要求:
1.Email属于自定义校验规则类,需要实现com.bruce.tool.validate.hibernate.core.Validator<T>接口
2.校验规则和错误提示,都在Email中实现.
使用样例-自定义-分组校验
使用代码:
public class Return implements Serializable {
@Function(value = Email.class,message = Email.ERROR,groups = Two.class)
private Integer id;
@Function(value = Email.class,message = Email.ERROR,groups = Two.class)
private String email;
}
使用要求:
1.在自定义校验基础上,增加groups配置即可,groups配置属于hibernate-validate基础功能.
使用样例-自定义-复杂校验
样例代码:
@Groups({
@Group(value = UserInfo.class,message = UserInfo.ERROR),
@Group(value = LoginInfo.class,message = LoginInfo.ERROR)
})
public class Return implements Serializable {
private Integer id;
private String email;
}
使用要求:
1.UserInfo以及LoginInfo需要实现com.bruce.tool.validate.hibernate.core.Validator<T>接口
2.实现的时候需要将泛型制定为具体的domain,如下:
public class UserInfo implements Validator<Return> {
public static final String ERROR = "用户信息不完整";
@Override
public boolean execute(TruckReturn value) {
// 这里实现多个字段的校验逻辑
return false;
}
}
注意事项
1.使用自定义校验的时候,如果同时需要做非空校验,可以有2中实现方式:
a.属性上增加@NotNull注解.
b.规则实现类中(比如UserInfo.class),自己实现非空判断.
2.因为正则表达式比较容易出现性能问题,因此不建议在设计校验规则的时候,使用复杂正则.
3.限制,一个复杂校验的对象(比如Email.class中)只支持一个错误信息.
补充说明
基于SpringMVC的配置,和基于Springboot的配置,后续补充.
仓库地址:https://gitee.com/marryself/tool-validate