欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringValidation自定義注解及分組校驗(yàn)功能詳解

 更新時(shí)間:2024年01月06日 10:02:07   作者:六花i  
這篇文章主要介紹了SpringValidation自定義注解及分組校驗(yàn)功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

1. 引入依賴

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-validation</artifactId>
   <version>3.2.0</version>
</dependency>

2. 自定義注解校驗(yàn)

使用場(chǎng)景:已有的注解不能滿足所有的校驗(yàn)需求,特殊的情況需要自定義校驗(yàn)(自定義校驗(yàn)注解)。 實(shí)現(xiàn)自定義注解可以通過模仿,SpringValidation提供的其他注解進(jìn)行改寫。

舉例說明:

我有一個(gè)實(shí)體類,其中一個(gè)參數(shù)state需要接收到前端數(shù)據(jù)后進(jìn)行校驗(yàn)(要求該參數(shù)只能是 已發(fā)布 或者 草稿)。而SpringValidation提供的注解無法滿足我的需求,此時(shí)便需要自定義注解。

2.1 創(chuàng)建Validation類

注意:該類需要實(shí)現(xiàn) ConstraintValidator接口,并實(shí)現(xiàn) isValid( )方法。方法內(nèi)即是校驗(yàn)規(guī)則, 我這里只是提供參考。請(qǐng)自行根據(jù)業(yè)務(wù)需求更改。
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;
/**
 * ConstraintValidator<State, String>前一個(gè)代表需要校驗(yàn)的注解,后一個(gè)代表校驗(yàn)類型
 */
public class Validation implements ConstraintValidator<State, String> {
    /**
     *
     * @param value 將來要校驗(yàn)的數(shù)據(jù)
     * @param constraintValidatorContext
     * @return
     */
    @Override
    public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
        //校驗(yàn)規(guī)則
        if (value == null) {
            return false;
        }
        if (value.equals("已發(fā)布") || value.equals("草稿")) {
            return true;
        }
        return false;
    }
}

2.2 創(chuàng)建注解對(duì)象

注解名稱,請(qǐng)根據(jù)自己業(yè)務(wù)需求更改。
import jakarta.validation.Constraint;
import jakarta.validation.Payload;
import java.lang.annotation.*;
@Documented //元注解,代表可在文檔顯示
@Constraint(
        validatedBy = {Validation.class} //指定提供校驗(yàn)規(guī)則的類,該類需要自己指定
)
//元注解,代表注解適用的對(duì)象(方法、字段、注解、類、屬性)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME) //元注解,代表注解的作用范圍
public @interface State {
    //報(bào)錯(cuò)提示
    String message() default "state參數(shù)只能是已發(fā)布或者草稿";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}

2.3 使用注解

找到對(duì)應(yīng)的實(shí)體類,在需要校驗(yàn)的參數(shù)上添加該注解即可。例如我這里需要對(duì)state進(jìn)行校驗(yàn)。

3. 分組校驗(yàn)

分組校驗(yàn)是指把校驗(yàn)項(xiàng)進(jìn)行歸類分組,在完成不同的功能的時(shí)候,校驗(yàn)指定組中的校驗(yàn)項(xiàng)。 分組校驗(yàn)常用于增加和修改操作時(shí)對(duì)數(shù)據(jù)的校驗(yàn)。

分組校驗(yàn)的 流程:

1.定義分組 

2.定義校驗(yàn)項(xiàng)時(shí)指定歸屬的分組

3.校驗(yàn)時(shí)指定要校驗(yàn)的分組

3.1 實(shí)體類內(nèi)部定義接口

3.2 在參數(shù)上指定分組

3.3 給@Validated注解賦值

注意: 如果在方法上對(duì)參數(shù)進(jìn)行校驗(yàn),需要在類上添加@Validated注解。如果在實(shí)體類中對(duì)成員遍歷進(jìn)行校驗(yàn),需要在使用到這個(gè)類的接口方法中添加@Validated注解。

到此這篇關(guān)于SpringValidation自定義注解以及分組校驗(yàn)的文章就介紹到這了,更多相關(guān)SpringValidation自定義注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決SpringBoot項(xiàng)目啟動(dòng)成功但接口訪問404的問題

    解決SpringBoot項(xiàng)目啟動(dòng)成功但接口訪問404的問題

    這篇文章主要介紹了如何解決SpringBoot項(xiàng)目啟動(dòng)成功但接口訪問404的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,接下來就跟著小編一起來看看吧
    2023-07-07
  • springboot中如何引入AOP切面編程

    springboot中如何引入AOP切面編程

    這篇文章主要介紹了springboot中如何引入AOP切面編程問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java線程優(yōu)先級(jí)變量及功能

    Java線程優(yōu)先級(jí)變量及功能

    這篇文章主要介紹了Java線程優(yōu)先級(jí)變量及功能,關(guān)于優(yōu)先級(jí)的問可能有兩個(gè)或更多線程被分配了相同的優(yōu)先級(jí),那么它們的執(zhí)行取決于操作系統(tǒng),更多相關(guān)介紹,需要的小伙伴可以參考一下
    2022-06-06
  • Java中File類中常用方法詳解

    Java中File類中常用方法詳解

    這篇文章主要為大家詳細(xì)介紹了File類中常用方法的程序演示,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • java本服務(wù)如何調(diào)用本服務(wù)接口

    java本服務(wù)如何調(diào)用本服務(wù)接口

    這篇文章主要介紹了java本服務(wù)如何調(diào)用本服務(wù)接口問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • springBoot中的properties配置解析

    springBoot中的properties配置解析

    這篇文章主要介紹了springBoot中的properties配置解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Spring Boot日志的打印與持久化詳細(xì)解析

    Spring Boot日志的打印與持久化詳細(xì)解析

    Spring Boot默認(rèn)使用SLF4J+Logback 記錄日志,并提供了默認(rèn)配置,即使我們不進(jìn)行任何額外配,也可以使用SLF4J+Logback進(jìn)行日志輸出
    2022-07-07
  • Java內(nèi)存溢出實(shí)現(xiàn)原因及解決方案

    Java內(nèi)存溢出實(shí)現(xiàn)原因及解決方案

    這篇文章主要介紹了Java內(nèi)存溢出實(shí)現(xiàn)原因及解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • SpringBoot使用quartz,注入feignClient,client為null問題

    SpringBoot使用quartz,注入feignClient,client為null問題

    在SpringBoot中使用Quartz和FeignClient時(shí),如果通過@Autowired或構(gòu)造方法注入FeignClient導(dǎo)致為null,可以使用Spring提供的通過文件名獲取bean的方式解決,這種方法在Quartz啟動(dòng)時(shí)通過反射注入類,而類還未初始化好,導(dǎo)致FeignClient為null的問題
    2024-11-11
  • springboot項(xiàng)目不同環(huán)境的配置讀取方式

    springboot項(xiàng)目不同環(huán)境的配置讀取方式

    SpringBoot支持application.properties、application.yml、application.yaml三種配置文件類型,可同時(shí)存在并合并配置,配置文件的讀取優(yōu)先級(jí)為:application.properties > application.yml > application.yaml,不同位置的相同類型配置文件
    2024-11-11

最新評(píng)論