专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java原生参数校验注解满足不了需求?来自己写一个

temp10 2024-09-27 23:03:05 java教程 7 ℃ 0 评论

上一篇介绍了一个Java原生参数校验注解的使用

https://www.toutiao.com/i6734117419129766407/

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

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表