参数校验框架使用说明

简介

在web项目和service项目中,有许多校验参数并返回结果的代码,比如:

屏幕快照 2018-01-16 下午5.27.49

这种校验代码比较冗长,费时费力且影响代码可读性。为此,提供一套参数校验框架,通过注解进行参数校验。

thor:1.4.57-RELEASE

配置方式

spring配置文件中配置AOP:
<aop:aspectj-autoproxy proxy-target-class="true"/>

<bean id="validateAspect" class="com.aixuexi.thor.validate.aspect.ValidationAspect"/>

<aop:config>
    <aop:aspect ref="validateAspect">
        <aop:around method="around" pointcut="execution(* com.aixuexi..*.*(..))"/>
    </aop:aspect>
</aop:config>
注意:web项目只能在springmvc的配置文件中配置。

使用方式

一、校验model域

1、在形参上加 @Validate 注解,表示该参数需要校验。groups参数表示校验组。
@RequestMapping(value = "/not_null", method = RequestMethod.GET)
@ResponseBody
public ResultData test(@Valid(groups = Group.WEB) PageParam pageParam) {
    return new ResultData("invoke success!");
}
2、在model域上添加校验注解,groups的值与@Validate注解groups的值有交集时才触发校验。
public class PageParam implements Serializable {

    @NotNull(groups = {Group.WEB}, successMessage = "ABC validate success")
    private Integer pageNum;
}

 二、校验形参

在形参上加校验注解,表示该参数需要校验。
@RequestMapping(value = "/not_null", method = RequestMethod.GET)
@ResponseBody
public ResultData test(@NotNull(errorMessage = "str1不能为null!") String str) {
    return new ResultData("invoke success!");
}

注解说明

注解
支持类型
说明
@Valid
Object
表示方法形参需要校验;
表示POJO对象需要校验;
表示Collection中的对象需要校验;
@Null
Object
必须为null
@NotNull
Object
不能为null
@Assert
Boolean
是否为true或false
@Range
Number
数字是否在区间内
@NotBlank
String
字符串不为空串
@Pattern
String
字符串是否匹配正则表达式
@ValidStr
String
字符串是否合法(仅含数字、英文、汉字、下划线)
@Length
String
字符串长度是否在区间内
@Telephone
String
字符串是否为手机号格式
@Email
String
字符串是否为email格式
@NotEmpty
Collection
集合是否为空
@Furture
Date
日期是否为未来时间
@Past
Date
日期是否为过去时间

目录机构

 参数校验框架目录结构

 

关于项目中.gitignore文件中*.properties一行的思考

在做项目重构过程中发现许多项目为了把dev下的配置文件忽略(因为本地配置经常改动),在.gitignore文件中加入“*.properties”来解决。

这样做固然固然很简单方便,但在思考一下,把所有的properties文件一棒子打死了(尤其是我们的gerrit还不能在线预览文件)。其实有这样一种场景,当其它环境的properties文件中有更新,你(也可能是你的队友)写完后本地测试没问题,然后commit 上去,发现非本地环境就是没有跑通,也许你会很快意识到.gitignore文件的问题,但当你本次提交有很多改动混合在一起的时候,你会首先怀疑自己的代码有问题,然后排查了半天,还是不知所以然。。。然后半天过去了。。。发现自己被很弱智的问题坑了。。。是的这是个很忧伤的故事,蛋蛋的忧伤

所以这个.gitignore文件加东西要慎重,太随意的话,在你忘记了你忽略了什么的时候,它就拐回来坑你,还有你的队友

回到我们的问题场景,我们只是为了忽略dev/下的配置文件,打死的范围不要多也不要少,来吧1,2,3走起
1.在”.gitignore”文件中加入”src/**/dev/”
2.清除git版本对要忽略文件的已有追踪
“`
git rm -r –cached src/**/dev/
“`

这时候执行git status查看发现,dev/下的文件被删除了,像下边这样

图片1

看到这个不必困扰,其实这里只是删除了git版本库中对这些文件的记录(看一下dev目录的这些文件,他们还在)。
3.别忘了最后一步add and commit
“`
git add .
git commit -m ‘fix ignore that only ignore dev/*’
git push origin head:refs/for/master
“`

在gerrit中+2并入分支

 

好了,解决,其它忽略类似