java validator 接口_利用自定义Validator和枚举类来限定接口的入参

本文介绍了如何在Java中利用自定义Validator和枚举类对接口的入参进行限定,以满足复杂业务场景的需求。通过创建自定义注解`EnumCheck`,配合枚举工具类`EnumUtil`,可以实现对特定字段的值是否在枚举范围内进行验证,从而提高代码的可读性和可维护性。
摘要由CSDN通过智能技术生成

趁热记录下,给未来的自己

0. 前言

Spring Validation 作为一个参数验证框架,本身提供的注解已经很强大了,能覆盖大部分业务场景需求,比如: @NotNull , @NotBlank , @Min , @Max , @Size , @Email 等等。

但是对于更加复杂的业务场景, Spring Validation 自带的这些注解就无能为力了,比如,假设有个接口,其中的一个入参是 String 类型,由于业务需要,该入参值的范围只能在一个允许的 list 中,不在范围中的传入值,直接返回异常。

常规做法是在业务代码里对入参做一层逻辑判断,但是这样做会导致业务代码和校验代码耦合,且开发效率不高,代码十分不美观。 更加优雅的做法是自定义一个 validator 配合枚举类,来实现这个需求。

1. 架构图

模块说明:

1: DTO – 接收入参的 DTO 类,使得收到的参数变成一个对象

1-1: private String para 对象加了 @EnumCheck 注解,表示 para 需要被校验

1-2: private String para1 对象未加 @EnumCheck 注解,表示 para1 不需要被校验

2: EnumCheck – 是一个注解类,需要在该类里实现自定义注解

3: EnumUtil – 枚举工具类,通过传入一个枚举参数,判断该参数是否在指定的枚举里,存在则返回枚举,不存在返回 null

4: Enum Class – 用户定义的枚举类,用于存放入参的范围

5: 异常逻辑 – 当 EnumCheck 失败后,进入异常逻辑

6: 后续业务逻辑 – 当 EnumCheck 成功后,进入后续的业务逻辑

2. 代码说明

2.1 JenkinsProcessBuildReqDTO.java

入参用该 DTO 类接收,在该类中定义需要被自定义 validate 的一个或者多个字段。

@Data

public class JenkinsProcessBuildReqDTO {

/**

* 部署环境</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值