建议首先阅读笔者的Spring method validation的不足
在【Spring method validation的不足】的文章中,笔者提出了如下问题:
- spring method validation 不支持方法对象视图的校验;
- 校验过程没有对应的快速失败机制。
步骤1:自定义@EnableValidation注解
自定义EnableValidation注解,该注解可以应用在类或者方法层级,标注在类上表示校验类下的所有方法,标注在方法上表示仅对该方法进行校验。
其中groups表示执行方法校验时的校验组。
同时该注解标注了@Inherited,表明该注解支持继承。
在这里简单说明下校验组的概念
假设数据库有user表,有id和name属性。
如果对应的javabean中id和name属性都标注了对应的约束,比如@NotNull,那么在删除和新增操作的时候都会去校验两个属性是否为空。但是其实删除的时候我们只需要去校验id属性,新增的时候只需要校验name属性,那么上面就会出问题。这时候就可以使用校验组,进行分组校验。
具体可以参考如下代码:
只需要在进行具体操作的时候指定对应的校验组就OK了,如下代码所示