最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)自定義注解可以通過(guò)模仿,SpringValidation提供的其他注解進(jìn)行改寫(xiě)。

舉例說(shuō)明:

我有一個(gè)實(shí)體類,其中一個(gè)參數(shù)state需要接收到前端數(shù)據(jù)后進(jìn)行校驗(yàn)(要求該參數(shù)只能是 已發(fā)布 或者 草稿)。而SpringValidation提供的注解無(wú)法滿足我的需求,此時(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 將來(lái)要校驗(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)文章

  • Spring動(dòng)態(tài)監(jiān)聽(tīng)Nacos配置中心key值變更的實(shí)現(xiàn)方法

    Spring動(dòng)態(tài)監(jiān)聽(tīng)Nacos配置中心key值變更的實(shí)現(xiàn)方法

    Nacos本身提供支持監(jiān)聽(tīng)配置變更的操作,但在使用起來(lái),個(gè)人感覺(jué)不是很友好,無(wú)法精確到某個(gè)key的變更監(jiān)聽(tīng),所以本文小編給大家介紹了Spring動(dòng)態(tài)監(jiān)聽(tīng)Nacos配置中心key值變更的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2024-08-08
  • Java 二維碼,QR碼,J4L-QRCode 的資料整理

    Java 二維碼,QR碼,J4L-QRCode 的資料整理

    本文主要介紹Java 中二維碼,QR碼,J4L-QRCode,這里整理了詳細(xì)的資料供大家學(xué)習(xí)參考關(guān)于二維碼的知識(shí),有需要的小伙伴可以參考下
    2016-08-08
  • java生成驗(yàn)證碼步驟歸納總結(jié)

    java生成驗(yàn)證碼步驟歸納總結(jié)

    這篇文章主要為大家詳細(xì)介紹了java生成驗(yàn)證碼的步驟總結(jié),需要的朋友可以參考下
    2017-04-04
  • SpringBoot引入swagger報(bào)錯(cuò)處理的解決方法

    SpringBoot引入swagger報(bào)錯(cuò)處理的解決方法

    這篇文章主要給大家介紹SpringBoot引入swagger是會(huì)出現(xiàn)報(bào)錯(cuò)的處理解決方法,文中有詳細(xì)的解決過(guò)程,感興趣的小伙伴可以跟著小編一起來(lái)學(xué)習(xí)吧
    2023-06-06
  • Java數(shù)據(jù)結(jié)構(gòu)(線性表)詳解

    Java數(shù)據(jù)結(jié)構(gòu)(線性表)詳解

    本文主要介紹了Java數(shù)據(jù)結(jié)構(gòu)(線性表)的相關(guān)知識(shí)。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-01-01
  • java普通類如何轉(zhuǎn)javafx程序

    java普通類如何轉(zhuǎn)javafx程序

    這篇文章主要介紹了java普通類如何轉(zhuǎn)javafx程序方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java全面細(xì)致講解==和equals的使用

    Java全面細(xì)致講解==和equals的使用

    這篇文章主要介紹了Java中==和equals()的區(qū)別,,==可以使用在基本數(shù)據(jù)類型變量和引用數(shù)據(jù)類型變量中,equals()是方法,只能用于引用數(shù)據(jù)類型,需要的朋友可以參考下
    2022-05-05
  • MybatisPlus實(shí)現(xiàn)分頁(yè)查詢和動(dòng)態(tài)SQL查詢的示例代碼

    MybatisPlus實(shí)現(xiàn)分頁(yè)查詢和動(dòng)態(tài)SQL查詢的示例代碼

    本文主要介紹了MybatisPlus實(shí)現(xiàn)分頁(yè)查詢和動(dòng)態(tài)SQL查詢的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Springboot創(chuàng)建子父工程過(guò)程圖解

    Springboot創(chuàng)建子父工程過(guò)程圖解

    這篇文章主要介紹了Springboot創(chuàng)建子父工程過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 深入解析Java中volatile的底層原理

    深入解析Java中volatile的底層原理

    這篇文章主要介紹了深入解析Java中volatile的底層原理,volatile關(guān)鍵字用于保證變量的可見(jiàn)性和禁止指令重排序,即當(dāng)一個(gè)線程修改了volatile變量的值,其他線程能夠立即看到這個(gè)變量的最新值,而不是使用緩存中的舊值,需要的朋友可以參考下
    2023-07-07

最新評(píng)論

郑州市| 凤山市| 金平| 隆昌县| 英吉沙县| 平乡县| 犍为县| 泰兴市| 阜南县| 浦县| 无为县| 曲麻莱县| 军事| 名山县| 扎囊县| 龙南县| 双峰县| 鸡西市| 濮阳县| 松阳县| 宝清县| 青河县| 新绛县| 平南县| 邵武市| 饶平县| 阿克| 朝阳县| 潮州市| 南雄市| 汤原县| 泰和县| 五台县| 乳源| 云和县| 黔西| 安达市| 乡宁县| 军事| 高要市| 新蔡县|