Spring Boot之Validation自定义实现的方法(springboot,validation,开发技术)

时间:2024-05-04 14:21:20 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    Spring%C2%A0Boot%E4%B9%8BValidation%E8%87%AA%E5%AE%9A%E4%B9%89%E5%AE%9E%E7%8E%B0%E7%9A%84%E6%96%B9%E6%B3%95

虽然在Spring Boot中已经提供了非常多的预置注解,用以解决在日常开发工作中的各类内容,但是在特定情况仍然存在某些场景,无法满足需求,需要自行定义相关的validator。

自定义的注解

这里的场景设置为进行IP地址的验证,通过注解的方式,让用户使用验证规则。注解定义如下:

这个注解是作用在Field字段上,运行时生效,触发的是IPAddressValidator这个验证类。

message

定制化的提示信息,主要是从ValidationMessages.properties里提取,也可以依据实际情况进行定制

groups

这里主要进行将validator进行分类,不同的类group中会执行不同的validator操作

payload

主要是针对bean的,使用不多。

然后自定义Validator,这个是真正进行验证的逻辑代码:

关于IP地址的验证规则是通用的,具体逻辑不用太在意,主要是需要这里Validator这个接口,以及其中的两个泛型参数,第一个为注解名称,第二个为实际字段的数据类型。

定义了实体类CustomFieldBean.java

使用方法非常简约,基于注解,无侵入逻辑。

单元测试用例

测试代码:

如果不希望由系统自行触发Validator的验证逻辑,则可以由开发者自行进行验证。在Spring Boot已经内置了Validator实例,直接将其加载进来即可。

使用示例如下:

自定义执行的单元测试

测试代码如下:

最近新开了一个项目,虽然hibernate-validator很好用,但是有时不能满足稍微复杂一些的业务校验。为了不在业务代码中写校验逻辑,以及让代码更优雅,故而采用了自定义校验注解的方式。

本例注解应用场景: 填写表单时,某一项数据存在时,对应的一类数据都应存在,一同提交。

1.类注解

主注解用于标记要在校验的实体类

2.辅助注解

辅助注解用于标注于要校验的字段,isMaster区分为主注解和从注解。

主注解是关键字段,存在才进行校验从注解对应字段的有效性;主注解的value()属性可以设置默认值,当字段对应值对应value()时才开启校验。

从注解为等待校验的值,默认为从注解。

3.校验类

校验类为实际执行校验逻辑的类,在类注解的@Constraint的validatedBy属性上设置。

要设置为校验类,首先要实现ConstraintValidator类的isValid方法。

4.校验失败

注解校验不同时会抛出一个MethodArgumentNotValidException异常。这里可以采用全局异常处理的方法,进行捕获处理。捕获之后的异常可以获取BindingResult 对象,后面就跟hibernate-validator处理方式一致了。

5.使用demo

注解的使用类似下面,首先在请求实体类上标注类注解,再在对应的字段上标注辅助注解。

本文:Spring Boot之Validation自定义实现的方法的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:C++中CLI模块的基本类型有哪些下一篇:

9 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18