首页 > 应用开发 > > Java原生参数校验注解满足不了需求?
自定义参数注解
1. 比如我们来个 自定义身份证校验 注解
这个注解是作用在Field字段上,运行时生效,触发的是IdentityCardNumber这个验证类。
message 定制化的提示信息,主要是从ValidationMessages.properties里提取,也可以依据实际情况进行定制
groups 这里主要进行将validator进行分类,不同的类group中会执行不同的validator操作
payload 主要是针对bean的,使用不多。
2. 然后自定义Validator
这个是真正进行验证的逻辑代码:
IdCardValidatorUtils在项目源码中,可自行查看
项目源码:https://github.com/leaJone/mybot
3. 使用自定义的注解
4.使用groups的校验
有的宝宝说同一个对象要复用,比如UserDTO在更新时候要校验userId,在保存的时候不需要校验userId,在两种情况下都要校验username,那就用上groups了:
先定义groups的分组接口Create和Update
再在需要校验的地方@Validated声明校验组
在DTO中的字段上定义好groups = {}的分组类型
注意:在声明分组的时候尽量加上 extend javax.validation.groups.Default 否则,在你声明@Validated(Update.class)的时候,就会出现你在默认没添加groups = {}的时候的校验组@Email(message = "邮箱格式不对"),会不去校验,因为默认的校验组是groups = {Default.class}.
5.restful风格用法
在多个参数校验,或者@RequestParam 形式时候,需要在controller上加注@Validated
总结
用起来很简单,soEasy,重点参与的统一结构体返回,统一参数校验,是减少我们代码大量的try catch 的法宝,我觉得在项目中,将异常处理好,并将异常做好日志管理,才是很好的升华,文章浅显,只是一个菜鸟的进阶笔记….
原文地址:https://juejin.im/post/5d3fbeb46fb9a06b317b3c48
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/832/viewspace-3166226/ ,如需转载,请注明出处,否则将追究法律责任。