ITPub博客

首页 > 应用开发 > > Java原生参数校验注解满足不了需求?

Java原生参数校验注解满足不了需求?

作者:gyu 时间:2019-11-06 10:59:25 0 删除 编辑

自定义参数注解

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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-12

  • 博文量
    129
  • 访问量
    1327