国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring Boot 中自定義數(shù)據(jù)校驗(yàn)注解

這篇具有很好參考價(jià)值的文章主要介紹了Spring Boot 中自定義數(shù)據(jù)校驗(yàn)注解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Spring Boot 中自定義數(shù)據(jù)校驗(yàn)注解

在 Spring Boot 中,我們可以使用 JSR-303 數(shù)據(jù)校驗(yàn)規(guī)范來(lái)校驗(yàn)表單數(shù)據(jù)的合法性。JSR-303 提供了一些常用的數(shù)據(jù)校驗(yàn)注解,例如 @NotNull、@NotBlank、@Size 等。但是,在實(shí)際開發(fā)中,我們可能需要自定義數(shù)據(jù)校驗(yàn)注解來(lái)滿足特定的需求。本文將介紹如何在 Spring Boot 中自定義數(shù)據(jù)校驗(yàn)注解,并提供示例代碼來(lái)演示它的用法。

Spring Boot 中自定義數(shù)據(jù)校驗(yàn)注解

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

在 Spring Boot 中,我們可以通過(guò)定義注解并使用 @Constraint 注解來(lái)自定義數(shù)據(jù)校驗(yàn)注解。下面是一個(gè)自定義的注解 @ZipCode,用于校驗(yàn)郵政編碼是否合法:

@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = ZipCodeValidator.class)
public @interface ZipCode {

    String message() default "Invalid zip code";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    @Target({ElementType.FIELD})
    @Retention(RetentionPolicy.RUNTIME)
    @interface List {
        ZipCode[] value();
    }
}

在上面的代碼中,我們使用了 @Constraint 注解來(lái)指示該注解需要使用 ZipCodeValidator 類進(jìn)行校驗(yàn)。@Constraint 注解中的參數(shù)含義如下:

  • validatedBy:指示使用哪個(gè)類進(jìn)行校驗(yàn)。
  • message:校驗(yàn)失敗時(shí)返回的消息。
  • groups:校驗(yàn)分組。
  • payload:校驗(yàn)負(fù)載。

在注解中,我們定義了一個(gè) ZipCodeValidator.List 內(nèi)部注解,用于支持多個(gè) @ZipCode 注解的使用。

自定義校驗(yàn)器

在自定義校驗(yàn)注解后,我們還需要實(shí)現(xiàn)校驗(yàn)器。下面是一個(gè) ZipCodeValidator 校驗(yàn)器的示例代碼:

public class ZipCodeValidator implements ConstraintValidator<ZipCode, String> {

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        if (value == null) {
            return true;
        }
        Pattern pattern = Pattern.compile("\\d{5}");
        Matcher matcher = pattern.matcher(value);
        return matcher.matches();
    }
}

在上面的代碼中,我們實(shí)現(xiàn)了 ConstraintValidator<ZipCode, String> 接口,并重寫了 isValid 方法。isValid 方法用于實(shí)際校驗(yàn)邏輯。在本例中,我們使用正則表達(dá)式驗(yàn)證郵政編碼是否符合 5 位數(shù)字的格式。

使用自定義校驗(yàn)注解

在定義自定義校驗(yàn)注解和校驗(yàn)器后,我們可以在 Java 對(duì)象中使用自定義校驗(yàn)注解。下面是一個(gè)示例代碼:

public class Address {

    @ZipCode
    private String zipCode;

    // 省略 getter 和 setter 方法
}

在上面的代碼中,我們?cè)?Address 類的 zipCode 屬性上使用了 @ZipCode 注解。在使用時(shí),我們不需要指定 message 參數(shù),因?yàn)樵搮?shù)已經(jīng)在 @ZipCode 注解中指定。

在控制器中,我們可以使用 @Valid 注解來(lái)指示需要校驗(yàn)的對(duì)象。例如:

@RestController
@RequestMapping("/addresses")
public class AddressController {

    @PostMapping
    public ResponseEntity<?> createAddress(@Valid @RequestBody Address address) {
        // 創(chuàng)建地址
        return ResponseEntity.ok().build();
    }
}

在上面的示例代碼中,我們使用了 @Valid 注解來(lái)指示需要校驗(yàn) RequestBody 中的 Address 對(duì)象。如果校驗(yàn)失敗,Spring Boot 將自動(dòng)返回一個(gè)包含錯(cuò)誤信息的響應(yīng)。

總結(jié)

在本文中,我們介紹了在 Spring Boot 中自定義數(shù)據(jù)校驗(yàn)注解的方法,并提供了示例代碼來(lái)演示它的用法。使用自定義校驗(yàn)注解可以幫助我們滿足特定的數(shù)據(jù)校驗(yàn)需求,從而提高 Web 應(yīng)用的安全性和可靠性。如果您在開發(fā) Web 應(yīng)用程序時(shí)需要進(jìn)行數(shù)據(jù)校驗(yàn),并且默認(rèn)的數(shù)據(jù)校驗(yàn)注解無(wú)法滿足您的需求,請(qǐng)務(wù)必考慮使用自定義校驗(yàn)注解的方法。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-495538.html

到了這里,關(guān)于Spring Boot 中自定義數(shù)據(jù)校驗(yàn)注解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java中自定義注解

    當(dāng)使用Java編寫應(yīng)用程序時(shí),我們常常使用注解來(lái)為程序添加附加信息,并且可以在運(yùn)行時(shí)讀取這些注解。除了Java提供的預(yù)定義注解外,我們還可以自定義注解來(lái)滿足自己的需求。在本文中,我們將介紹Java中自定義注解的基礎(chǔ)知識(shí)。 一、什么是注解? 注解是一種元數(shù)據(jù),可

    2024年02月14日
    瀏覽(24)
  • Spring boot自定義注解

    定義一個(gè)注解類 使用AOP對(duì)注解進(jìn)行解析,需要定義一個(gè)切面類,包括自定義的切點(diǎn)方法normalPointCut(),以及連接點(diǎn)的處理方法normalPointAround()。連接點(diǎn)中的ProceedingJoinPoint可以獲取被代理類的方法屬性等。 2.1 定義注解 2.2 實(shí)現(xiàn)參數(shù)解釋器 記得實(shí)現(xiàn)WebMvcConfigurer 接口配置LimitReque

    2023年04月27日
    瀏覽(27)
  • spring boot實(shí)現(xiàn)實(shí)體類參數(shù)自定義校驗(yàn)

    安裝依賴項(xiàng) 1、新建實(shí)體類 2、新建驗(yàn)證類 3、在控制器中 3.1 首先寫入方法 @InitBinder注解的作用是在控制器方法執(zhí)行之前,先執(zhí)行有 @InitBinder注解的方法,使用WebDataBinder 把新建的驗(yàn)證規(guī)則綁定 3.2 在控制器接口參數(shù)中

    2024年02月12日
    瀏覽(22)
  • Spring Boot 自定義注解,AOP 切面統(tǒng)一打印出入?yún)⒄?qǐng)求日志

    Spring Boot 自定義注解,AOP 切面統(tǒng)一打印出入?yún)⒄?qǐng)求日志

    今天主要說(shuō)說(shuō)如何通過(guò)自定義注解的方式,在 Spring Boot 中來(lái)實(shí)現(xiàn) AOP 切面統(tǒng)一打印出入?yún)⑷罩尽P』锇閭兛梢允詹匾徊ā?廢話不多說(shuō),進(jìn)入正題! 在看看實(shí)現(xiàn)方法之前,我們先看下切面日志輸出效果咋樣: 從上圖中可以看到,每個(gè)對(duì)于每個(gè)請(qǐng)求,開始與結(jié)束一目了然,并且

    2024年02月08日
    瀏覽(22)
  • Spring Boot入門(23):記錄接口日志再也不難!用AOP和自定義注解給Spring Boot加上日志攔截器!

    Spring Boot入門(23):記錄接口日志再也不難!用AOP和自定義注解給Spring Boot加上日志攔截器!

    ? ? ? ? 在上兩期中,我們著重介紹了如何集成使用 Logback?與?log4j2?日志框架的使用,今天我們講解的主題依舊跟日志有關(guān),不過(guò)不是使用何種開源框架,而是自己動(dòng)手造。 ? ? ? ? Spring的核心之一AOP;AOP翻譯過(guò)來(lái)叫面向切面編程, 核心就是這個(gè)切面. 切面表示從業(yè)務(wù)邏輯中

    2024年02月11日
    瀏覽(25)
  • Spring Boot 3自定義注解+攔截器+Redis實(shí)現(xiàn)高并發(fā)接口限流

    在當(dāng)今互聯(lián)網(wǎng)應(yīng)用開發(fā)中,高并發(fā)訪問(wèn)是一個(gè)常見的挑戰(zhàn)。為了保障系統(tǒng)的穩(wěn)定性和可靠性,我們需要對(duì)接口進(jìn)行限流,防止因過(guò)多的請(qǐng)求導(dǎo)致系統(tǒng)崩潰。 本文將介紹如何利用Spring Boot 3中的自定義注解、攔截器和Redis實(shí)現(xiàn)高并發(fā)接口限流,幫助程序員解決這一挑戰(zhàn)。 1. 自定

    2024年04月28日
    瀏覽(25)
  • Spring Boot學(xué)習(xí)隨筆- 實(shí)現(xiàn)AOP(JoinPoint、ProceedingJoinPoint、自定義注解類實(shí)現(xiàn)切面)

    Spring Boot學(xué)習(xí)隨筆- 實(shí)現(xiàn)AOP(JoinPoint、ProceedingJoinPoint、自定義注解類實(shí)現(xiàn)切面)

    學(xué)習(xí)視頻:【編程不良人】2021年SpringBoot最新最全教程 問(wèn)題 現(xiàn)有業(yè)務(wù)層開發(fā)存在問(wèn)題 額外功能代碼存在大量冗余 每個(gè)方法都需要書寫一遍額外功能代碼不利于項(xiàng)目維護(hù) Spring中的AOP AOP:Aspect 切面 + Oriented 面向 Programmaing 面向切面編程 Aspect(切面) = Advice(通知) + Pointcut(

    2024年02月04日
    瀏覽(43)
  • spring數(shù)據(jù)深度校驗(yàn)/自定義校驗(yàn)

    @Validated和@Valid配合可以進(jìn)行對(duì)象的深層次校驗(yàn)。 @Valid 作用在方法,字段,構(gòu)造器和參數(shù)上 @Validated 作用在類 方法 和參數(shù)上 當(dāng)我們的接口參數(shù)中包含深層次的對(duì)象時(shí) 如: BaseInfo時(shí)公共對(duì)象,字段含有校驗(yàn)的邏輯 ?Person為接口接收對(duì)象,屬性中包含BaseInfo。 對(duì)于接口輸入?yún)?shù)

    2024年02月08日
    瀏覽(14)
  • Spring Boot項(xiàng)目中不使用@RequestMapping相關(guān)注解,如何動(dòng)態(tài)發(fā)布自定義URL路徑

    Spring Boot項(xiàng)目中不使用@RequestMapping相關(guān)注解,如何動(dòng)態(tài)發(fā)布自定義URL路徑

    在Spring Boot項(xiàng)目開發(fā)過(guò)程中,對(duì)于接口API發(fā)布URL訪問(wèn)路徑,一般都是在類上標(biāo)識(shí) @RestController 或者 @Controller 注解,然后在方法上標(biāo)識(shí) @RequestMapping 相關(guān)注解,比如: @PostMapping 、 @GetMapping 注解,通過(guò)設(shè)置注解屬性,發(fā)布URL。在某些場(chǎng)景下,我覺(jué)得這樣發(fā)布URL太麻煩了,不適用,

    2024年03月22日
    瀏覽(20)
  • Spring Boot入門(23):基于AOP實(shí)現(xiàn)自定義注解攔截接口日志并保存入庫(kù) | 超級(jí)詳細(xì),建議收藏

    Spring Boot入門(23):基于AOP實(shí)現(xiàn)自定義注解攔截接口日志并保存入庫(kù) | 超級(jí)詳細(xì),建議收藏

    ? ? ? ? 在上兩期中,我們著重介紹了如何集成使用 Logback?與?log4j2?日志框架的使用,今天我們講解的主題依舊跟日志有關(guān),不過(guò)不是使用何種開源框架,而是自己動(dòng)手造。 ? ? ? ? Spring的核心之一AOP;AOP翻譯過(guò)來(lái)叫面向切面編程, 核心就是這個(gè)切面. 切面表示從業(yè)務(wù)邏輯中

    2024年02月11日
    瀏覽(29)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包