在SpringBoot中怎么验证输入请求的自定义注解
导读:本文共3148.5字符,通常情况下阅读需要10分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 在我们的日常编程中,我们会使用许多可用于验证的 Spring Boot 默认注解,如@NotNull、@Size、@NotBlank、@Digits等等,这是验证任何传入的一种很酷的方式要求。考虑一个场景,默认情况下有一些字段是可选的,如果其他一些字段由特定值填充,则它必须是强制性的。Spring 没有为这种验证预定义注释。让我们举一些例子,看看我们如何简化验证... ...
目录
(为您整理了一些要点),点击可以直达。在我们的日常编程中,我们会使用许多可用于验证的 Spring Boot 默认注解,如@NotNull、@Size、@NotBlank、@Digits等等,这是验证任何传入的一种很酷的方式要求。
考虑一个场景,默认情况下有一些字段是可选的,如果其他一些字段由特定值填充,则它必须是强制性的。
Spring 没有为这种验证预定义注释。
让我们举一些例子,看看我们如何简化验证过程,使其代码可重用,并在注释级别引入抽象。
在一个典型的销售平台中,会有销售操作和无效销售操作。该金额在销售操作中是强制性的,在销售操作无效的情况下,冲销类型将是强制性的。
我们的 dto 类如下:
IncomingRequestDto 有几个属性,如 transactionType、reversalType 作为 ENUMS。
和 amountDto 为:
场景一:amountDto.value 是有条件的。当我们收到一个具有 transactionType="SALE" 的请求时,amountDto.value 应该是强制性的。
场景 2:reversalType 是有条件的。当我们收到一个具有 transactionType="VOIDSALE" 的请求时,reversalType 应该是强制性的。
让我们首先定义一个带有验证过程所需属性的注释:
fieldName 和 fieldValue 将被定义,我们必须在其上搜索特定值。这里是“销售”。
将定义dependFieldName,我们必须在其上搜索值。
现在让我们实现上面的接口:
在这里,我们需要返回并使用其实现类装饰我们的界面,如下所示:
就是这样!我们已经完成了!让我们用我们的自定义注解装饰我们的 IncomingRequestDto 类:
通过添加上述注释,请求将被拒绝为BAD,HTTP 400不为 Sale 类型请求填充 amountDto.value。我们可以在 List 中添加任意数量的验证,而无需更改任何代码,如下所示:
在SpringBoot中怎么验证输入请求的自定义注解的详细内容,希望对您有所帮助,信息来源于网络。