SpringValidation自定義注解及分組校驗功能詳解
1. 引入依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> <version>3.2.0</version> </dependency>
2. 自定義注解校驗
使用場景:已有的注解不能滿足所有的校驗需求,特殊的情況需要自定義校驗(自定義校驗注解)。 實現(xiàn)自定義注解可以通過模仿,SpringValidation提供的其他注解進行改寫。
舉例說明:
我有一個實體類,其中一個參數(shù)state需要接收到前端數(shù)據(jù)后進行校驗(要求該參數(shù)只能是 已發(fā)布 或者 草稿)。而SpringValidation提供的注解無法滿足我的需求,此時便需要自定義注解。
2.1 創(chuàng)建Validation類
注意:該類需要實現(xiàn) ConstraintValidator接口,并實現(xiàn) isValid( )方法。方法內(nèi)即是校驗規(guī)則, 我這里只是提供參考。請自行根據(jù)業(yè)務需求更改。
import jakarta.validation.ConstraintValidator; import jakarta.validation.ConstraintValidatorContext; /** * ConstraintValidator<State, String>前一個代表需要校驗的注解,后一個代表校驗類型 */ public class Validation implements ConstraintValidator<State, String> { /** * * @param value 將來要校驗的數(shù)據(jù) * @param constraintValidatorContext * @return */ @Override public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) { //校驗規(guī)則 if (value == null) { return false; } if (value.equals("已發(fā)布") || value.equals("草稿")) { return true; } return false; } }
2.2 創(chuàng)建注解對象
注解名稱,請根據(jù)自己業(yè)務需求更改。
import jakarta.validation.Constraint; import jakarta.validation.Payload; import java.lang.annotation.*; @Documented //元注解,代表可在文檔顯示 @Constraint( validatedBy = {Validation.class} //指定提供校驗規(guī)則的類,該類需要自己指定 ) //元注解,代表注解適用的對象(方法、字段、注解、類、屬性) @Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE}) @Retention(RetentionPolicy.RUNTIME) //元注解,代表注解的作用范圍 public @interface State { //報錯提示 String message() default "state參數(shù)只能是已發(fā)布或者草稿"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; }
2.3 使用注解
找到對應的實體類,在需要校驗的參數(shù)上添加該注解即可。例如我這里需要對state進行校驗。
3. 分組校驗
分組校驗是指把校驗項進行歸類分組,在完成不同的功能的時候,校驗指定組中的校驗項。 分組校驗常用于增加和修改操作時對數(shù)據(jù)的校驗。
分組校驗的 流程:
1.定義分組
2.定義校驗項時指定歸屬的分組
3.校驗時指定要校驗的分組
3.1 實體類內(nèi)部定義接口
3.2 在參數(shù)上指定分組
3.3 給@Validated注解賦值
注意: 如果在方法上對參數(shù)進行校驗,需要在類上添加@Validated注解。如果在實體類中對成員遍歷進行校驗,需要在使用到這個類的接口方法中添加@Validated注解。
到此這篇關于SpringValidation自定義注解以及分組校驗的文章就介紹到這了,更多相關SpringValidation自定義注解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot使用quartz,注入feignClient,client為null問題
在SpringBoot中使用Quartz和FeignClient時,如果通過@Autowired或構造方法注入FeignClient導致為null,可以使用Spring提供的通過文件名獲取bean的方式解決,這種方法在Quartz啟動時通過反射注入類,而類還未初始化好,導致FeignClient為null的問題2024-11-11