(1). fluent-validator是什么?
FluentValidator是百度开源的一个验证框架,适用于以Java语言开发的程序,让开发人员把重点回归到业务逻辑上,使用流式(Fluent Interface)调用风格让验证跑起来很优雅,同时验证器(Validator)可以做到开闭原则,实现最大程度的复用.
(2). 使用步骤
- 添加fluent-validator依赖.
- 定义验证Handler.
- 定义要验证的Object.
- 验证.
(3). pom.xml
<dependency>
<groupId>com.baidu.unbiz</groupId>
<artifactId>fluent-validator</artifactId>
<version>1.0.5</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
(4). CarSeatCountValidator
class CarSeatCountValidator
extends ValidatorHandler<Integer>
implements Validator<Integer> {
@Override
public boolean validate(ValidatorContext context, Integer t) {
if (t < 2) {
ValidationError error = new ValidationError();
error.setErrorCode(99999);
error.setErrorMsg(String.format("Seat count is not valid, invalid value=%s", t));
context.addError(error);
return false;
}
return true;
}
}
(5). 定义要验证的业务模型Car
class Car {
private String manufacturer;
private String licensePlate;
private int seatCount;
// ... ... set/get
}
(6). Test
public static void main(String[] args) {
// 1. 要验证的对象
Car car = new Car();
// 2. 定义验证后的回调函数
ValidateCallback callback = new ValidateCallback() {
@Override
public void onUncaughtException(Validator validator, Exception e, Object target) throws Exception {
}
@Override
public void onSuccess(ValidatorElementList validatorElementList) {
}
@Override
public void onFail(ValidatorElementList validatorElementList, List<ValidationError> errors) {
System.out.println(errors);
}
};
// 开始验证
FluentValidator
// 创建:FluentValidator,所以是安全的.
.checkAll()
// 验证规则不通过时,立即返回,不再进行后续的验证了
.failFast().on(car.getSeatCount(), new CarSeatCountValidator())
// 验证,并回调
.doValidate(callback);
}
(7). 总结
是不是感觉Fluent-Validator相当的简单易用?那么源码结构是什么样的呢?