博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在SpringBoot中使用FluentValidator验证插件
阅读量:6509 次
发布时间:2019-06-24

本文共 2332 字,大约阅读时间需要 7 分钟。

前言

在我们编写项目的时候,在controller中往往离不开对一些数据的校验。这里并不是说对于这些数据业务上面的校验,而是对这些数据进行空校验或者是长度校验等。

有些时候校验可以省略,根据业务的需要进行调整,而多数情况下,服务端对客户端一直采用的是不信任的策略,所以对很多参数都需要进行校验。

而校验的目的就是为了安全有序的执行之后的业务逻辑。从而一定程度的上的减轻数据库的压力了,不要让数据库成为你校验数据的工具。

但是这样的校验总是显得很复杂而且很臃肿,复用性也不高,所以我准备使用FluentValidator这个插件帮助我完成这个任务。

已经加入我的github模版中:

 

FluentValidator简介

FluentValidator是百度的一个开源验证插件,我习惯这样叫它,简单的说,它就是为了校验数据简单并且复用而存在的。

通过这个插件,你可以对接收到的数据进行你所需要的校验,并且返回对应的错误信息,同时它还提供一些比较不错的显示错误的功能。

其实我主要使用它的原因在于,它的复用性高和代码简洁。

 

FluentValidator使用

使用gradle导入依赖

compile (group: 'com.baidu.unbiz', name: 'fluent-validator-jsr303', version: '1.0.9'){

exclude module: 'slf4j-log4j12'
}需要注意的是需要防止jar冲突,所以需要排除一些依赖,你可以根据自己的需要使用。或者如果使用maven或者自行下载jar均可

 

新建NotNullStringValidator.java

package com.linkinstars.springBootTemplate.validator;import com.baidu.unbiz.fluentvalidator.ValidationError;import com.baidu.unbiz.fluentvalidator.Validator; import com.baidu.unbiz.fluentvalidator.ValidatorContext; import com.baidu.unbiz.fluentvalidator.ValidatorHandler; /** * 字符串非空校验 * @author LinkinStar */ public class NotNullStringValidator extends ValidatorHandler
implements Validator
{ //需要被校验字符串的字段名 private String fieldName; public NotNullStringValidator(String fieldName) { this.fieldName = fieldName; } /** * 校验方法 * @param checkedString 需要被校验字符串 */ @Override public boolean validate(ValidatorContext context, String checkedString){ if (null == checkedString || "" == checkedString) { context.addError(ValidationError.create(String.format("%s不能为空!", fieldName)) .setErrorCode(-1) .setField(fieldName) .setInvalidValue(checkedString)); return false; } return true; } }

 

 

在需要校验的地方这样使用

//测试校验字符串参数        String checkedString = "";        Result validatorResult = FluentValidator.checkAll()                .on(checkedString, new NotNullStringValidator("测试姓名")) .doValidate() .result(ResultCollectors.toSimple()); if (!validatorResult.isSuccess()) { System.out.println(validatorResult.getErrors()); }

如果需要校验多个字段,直接在.on后面继续.on即可如

.on(checkedString1, new NotNullStringValidator("测试姓名")).on(checkedString2, new NotNullStringValidator("测试帐号"))如果需要验证不同的情况,如验证数字的大小,验证手机号等,只需编写新的的Validator的类就可以了这里只是举例字符串的简单校验而已。

 

总结

使用这样的校验方式,可以在复用很多的校验规则,同时返回你所需要的错误信息,而且它提供了错误码可以自己定义编号,校验也会变的很清晰。使用的时候要注意下面几点,首先是要明确校验的规则,不能盲目的校验,还有就是有些时候需要特殊校验的就手动编写不一定非要都用插件校验。这个插件还有很多的功能,我只是提出了我所需要的功能和方式,具体更多的用法可以参考:

 
 

转载地址:http://ijbfo.baihongyu.com/

你可能感兴趣的文章
java下载服务器端文件_java客户端怎么从服务器下载文件
查看>>
java添加日志文件_JAVA添加日志文件 - osc_ug2wy0bi的个人空间 - OSCHINA - 中文开源技术交流社区...
查看>>
c语言和java的堆和栈的区别_C语言中堆和栈的区别
查看>>
java getmethod_java中getMethod*()和getDeclaredMethod*()的区别
查看>>
java ai寻路_游戏AI-A*寻路(2)
查看>>
java jdk设置_Java如何在OS X上设置或更改默认Java(JDK)版本?
查看>>
java 枚举抽象方法_java枚举中添加抽象方法
查看>>
java 线程 this_java多线程
查看>>
leveldb java实例_leveldb的使用
查看>>
java如何获取文件路径_Java如何获取文件路径
查看>>
c 定义线程监听mysql_MySQL 线程监控 -- mymon
查看>>
java主线程跑了没效果_Java:为什么主线程没有进展?
查看>>
java可变参求平均数_6.9 接收可变数目参数的方法
查看>>
下面有关java类加载器牛客网_下面有关java classloader说法错误的是?
查看>>
JAVA db client_java – 找不到类[org.apache.derby.jdbc.ClientDriver].尝试连接到db时
查看>>
java 小于5的随机数_Java 生成随机数的 5 种方式,你知道几种?
查看>>
java中需要注意的东西_一些在JAVA中要注意的东西(3)
查看>>
python中类方法可以访问实例属性吗_[python学习心得17] 实例属性、方法和类的属性、方法...
查看>>
java 暗黑字符串_CSS变量实现暗黑模式,我的小铺页面已经支持
查看>>
java多个if语句的执行顺序_Java学习笔记-第四章 流程控制语句
查看>>