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

Springboot @Validated注解詳細(xì)說明

這篇具有很好參考價(jià)值的文章主要介紹了Springboot @Validated注解詳細(xì)說明。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

在Spring Boot中,@Validated注解用于驗(yàn)證請(qǐng)求參數(shù)。它可以應(yīng)用在Controller類或方法上

1、引入依賴

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

2、參數(shù)說明與使用示例

注解 驗(yàn)證的數(shù)據(jù)類型 描述
@NotNull 任意類型 驗(yàn)證屬性不能為null
@NotBlank 字符串 驗(yàn)證字符串屬性不能為空且長(zhǎng)度必須大于0
@Size(min,max ) CharSequence
Collection
Map
Array
字符串:字符串長(zhǎng)度必須在指定的范圍內(nèi)
Collection:集合大小必須在指定的范圍內(nèi)
Map:map的大小必須在指定的范圍內(nèi)
Array:數(shù)組長(zhǎng)度必須在指定的范圍內(nèi)
@Min 整型類型 驗(yàn)證數(shù)字屬性的最小值
@Max 整型類型 驗(yàn)證數(shù)字屬性的最大值
@DecimalMin 數(shù)字類型 驗(yàn)證數(shù)字屬性的最小值(包括小數(shù))
@DecimalMax 數(shù)字類型 驗(yàn)證數(shù)字屬性的最大值(包括小數(shù))
@Digits(integer,fraction) 數(shù)字類型 驗(yàn)證數(shù)字屬性的整數(shù)位數(shù)和小數(shù)位數(shù)
@Email 字符串類型 驗(yàn)證字符串屬性是否符合Email格式
@Pattern 字符串 驗(yàn)證字符串屬性是否符合指定的正則表達(dá)式
@Positive 數(shù)字類型 驗(yàn)證數(shù)值為正數(shù)
@PositiveOrZero 數(shù)字類型 驗(yàn)證數(shù)值為正數(shù)或0
@Negative 數(shù)字類型 驗(yàn)證數(shù)值為負(fù)數(shù)
@NegativeOrZero 數(shù)字類型 驗(yàn)證數(shù)值為負(fù)數(shù)或0
@AssertTrue 布爾類型 參數(shù)值必須為 true
@AssertFalse 布爾類型 參數(shù)值必須為 false
@Past 時(shí)間類型(Date) 參數(shù)值為時(shí)間,且必須小于 當(dāng)前時(shí)間
@PastOrPresent 時(shí)間類型(Date) 參數(shù)值為時(shí)間,且必須小于或等于 當(dāng)前時(shí)間
@Future 時(shí)間類型(Date) 參數(shù)值為時(shí)間,且必須大于 當(dāng)前時(shí)間
@FutureOrPresent 時(shí)間類型(Date) 參數(shù)值為時(shí)間,且必須大于或等于 當(dāng)前日期
@Data
public class User {
    // @NotNull:驗(yàn)證屬性不能為null。
    @NotNull(message = "用戶名不能為null")
    private String username;

    // @NotBlank:驗(yàn)證字符串屬性不能為空且長(zhǎng)度必須大于0。
    @NotBlank(message = "用戶名不能為空且長(zhǎng)度必須大于0")
    private String username1;

    // @Size:驗(yàn)證字符串屬性的長(zhǎng)度范圍。
    @Size(min = 6, max = 20,message = "密碼最小6位,最長(zhǎng)20位")
    private String password;

    // @Min:驗(yàn)證數(shù)字屬性的最小值。
    @Min(value = 18,message = "年齡最小18歲")
    private int age;

    // @Max:驗(yàn)證數(shù)字屬性的最大值。
    @Max(100)
    private int age1;

    // @DecimalMin:驗(yàn)證數(shù)字屬性的最小值(包括小數(shù))。
    @DecimalMin("0.01")
    private BigDecimal price;

    // @DecimalMax:驗(yàn)證數(shù)字屬性的最大值(包括小數(shù))。
    @DecimalMax("1000.00")
    private BigDecimal price1;

    // @Digits:驗(yàn)證數(shù)字屬性的整數(shù)位數(shù)和小數(shù)位數(shù)。
    @Digits(integer = 3, fraction = 2)
    private BigDecimal weight;

    // @Email:驗(yàn)證字符串屬性是否符合Email格式。
    @Email
    private String email;

    // @Pattern:驗(yàn)證字符串屬性是否符合指定的正則表達(dá)式。
    @Pattern(regexp = "[A-Za-z0-9]+")
    private String username2;
    
    // @Positive:驗(yàn)證數(shù)值為正數(shù)
    @Positive
    private int age2;

    // @PositiveOrZero:驗(yàn)證數(shù)值為正數(shù)或0
    @PositiveOrZero
    private int age3;

    // @Negative:驗(yàn)證數(shù)值為負(fù)數(shù)
    @Negative
    private int age4;

    // @NegativeOrZero:驗(yàn)證數(shù)值為負(fù)數(shù)或0
    @NegativeOrZero
    private int age5;

    // @AssertTrue:參數(shù)值必須為 true
    @AssertTrue
    private boolean hasMoney;

    // @AssertFalse:參數(shù)值必須為 false
    @AssertFalse
    private boolean hasMoney1;

    // @Past:參數(shù)值為時(shí)間,且必須小于 當(dāng)前時(shí)間
    @Past
    private Date time;

    // @PastOrPresent:參數(shù)值為時(shí)間,且必須小于或等于 當(dāng)前時(shí)間
    @PastOrPresent
    private Date time1;

    // @Future:參數(shù)值為時(shí)間,且必須大于 當(dāng)前時(shí)間
    @Future
    private Date time2;

    // @FutureOrPresent:參數(shù)值為時(shí)間,且必須大于或等于 當(dāng)前日期
    @FutureOrPresent
    private Date time3;
}

嵌套校驗(yàn):

在被檢驗(yàn)的字段上添加 @Valid 注解就可以實(shí)現(xiàn)嵌套檢驗(yàn)

@Data
public class User3 {
    @Valid
    List<User2> user2List;

    @Valid
    private User2 user2;
}

@Data
 class User2 {
    @NotBlank(message = "用戶名不能為空!")
    private String username;
}

3、校驗(yàn)注解的三個(gè)參數(shù):

Springboot @Validated注解詳細(xì)說明,spring boot,spring boot,java

  • message:自定義錯(cuò)誤消息??梢酝ㄟ^該參數(shù)指定驗(yàn)證失敗時(shí)返回的錯(cuò)誤消息。
    示例:
public class User {
    @NotBlank(message = "用戶名不能為空")
    private String username;
    
    // getter and setter
}
  • groups:分組校驗(yàn)??梢酝ㄟ^該參數(shù)指定在特定的驗(yàn)證分組中才進(jìn)行驗(yàn)證。
    示例:
public interface Group1 {}

public interface Group2 {}

public class User {
    @NotBlank(groups = Group1.class)
    private String username;
    
    @NotBlank(groups = Group2.class)
    private String password;
    
    // getter and setter
}

username屬性只在Group1分組中進(jìn)行驗(yàn)證,password屬性只在Group2分組中進(jìn)行驗(yàn)證。

  • payload:用于攜帶額外的驗(yàn)證信息。可以通過該參數(shù)傳遞一些自定義的驗(yàn)證信息。(不常用)
    示例:
public class User {
    @NotBlank(payload = {ValidationInfo.class})
    private String username;
    
    // getter and setter
}

public class ValidationInfo {
    private String info;
    
    // getter and setter
}

當(dāng)驗(yàn)證失敗時(shí),可以通過ConstraintViolation對(duì)象獲取到ValidationInfo對(duì)象,并獲取其中的驗(yàn)證信息。

Set<ConstraintViolation<User>> violations = validator.validate(user);
for (ConstraintViolation<User> violation : violations) {
    if (violation.getConstraintDescriptor().getPayload().contains(ValidationInfo.class)) {
        ValidationInfo validationInfo = violation.getConstraintDescriptor().getPayload(ValidationInfo.class);
        String info = validationInfo.getInfo();
        // 處理驗(yàn)證信息
    }
}

4、在post 和 get 請(qǐng)求上使用

在post上使用@Validated,get上直接放校驗(yàn)注解

Springboot @Validated注解詳細(xì)說明,spring boot,spring boot,java文章來源地址http://www.zghlxwxcb.cn/news/detail-633629.html

到了這里,關(guān)于Springboot @Validated注解詳細(xì)說明的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(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)文章

  • springboot使用@Valid 和 @Validated 注解校驗(yàn)詳解以及編寫一個(gè)自定義全局異常類

    springboot使用@Valid 和 @Validated 注解校驗(yàn)詳解以及編寫一個(gè)自定義全局異常類

    全局異常處理類 驗(yàn)證: ============================================== 導(dǎo)入所需要的包: 如果你是 springboot 項(xiàng)目,那么可以不用引入了,已經(jīng)引入了,他就存在于最核心的 web 開發(fā)包里面。 如果你不是 springboot 項(xiàng)目,那么引入下面依賴即可: 新建三個(gè)實(shí)體類 實(shí)現(xiàn)一: 使用@Valid注解修

    2024年02月10日
    瀏覽(30)
  • springboot 集成 Swagger2 配置以及常用注解的說明和使用 ( 超詳細(xì))

    springboot 集成 Swagger2 配置以及常用注解的說明和使用 ( 超詳細(xì))

    一、注解的使用 和?說明 結(jié)構(gòu)化說明如下: @Api:用在請(qǐng)求的類上,表示對(duì)類的說明? ? ? tags=\\\"說明該類的作用,可以在UI界面上看到的注解\\\"?? ?(也就是給類取別名) ? ? value=\\\"該參數(shù)沒什么意義,在UI界面上也看到,所以不需要配置\\\" ?? @ApiOperation:用在請(qǐng)求的方法上,說

    2024年02月03日
    瀏覽(28)
  • Spring Boot @Validated 和Javax的@Valid配合使用

    Spring Boot @Validated 和Javax的@Valid配合使用

    @Validation 和@Valid 常常配合使用對(duì)傳輸?shù)膮?shù)進(jìn)行數(shù)據(jù)校驗(yàn)的注解,并通過配置全局異常處理器進(jìn)行合理化的提示,增加用戶的體驗(yàn) 并且@Validated可以通過分組來指定什么時(shí)候觸發(fā)什么樣的參數(shù)校驗(yàn)(這里看一下就行,下面有說什么是分組) 其實(shí)不用這兩個(gè)注解也可以完成對(duì)傳

    2024年02月09日
    瀏覽(27)
  • Java、Java EE、Spring和Spring Boot核心注解

    文章遷移至個(gè)人博客 此頁(yè)面包含常用 Java 、 Java EE 、 Spring 、 Spring Boot 、 JPA 常用注解的一站式說明。 @Component注解 @Component 注解表明被注解的類是一個(gè)“spring bean/組件”。@Component注解告訴Spring容器自動(dòng)創(chuàng)建Spring bean。 @Autowired注解 @Autowired 注解用于自動(dòng)注入 bean。@Autowired 注

    2024年02月15日
    瀏覽(25)
  • java spring boot 注解、接口和問題解決方法(持續(xù)更新)

    java spring boot 注解、接口和問題解決方法(持續(xù)更新)

    @RestController ????????是SpringMVC框架中的一個(gè)注解,它結(jié)合了@Controller和@ResponseBody兩個(gè)注解的功能,用于標(biāo)記一個(gè)類或者方法,表示該類或方法用于處理HTTP請(qǐng)求,并將響應(yīng)的結(jié)果直接返回給客戶端,而不需要進(jìn)行視圖渲染 @Controller ????????是Spring Framework中的注解,用于

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

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

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

    2024年02月11日
    瀏覽(28)
  • 【SpringBoot】詳細(xì)介紹Spring Boot中@Component

    在Spring Boot中,`@Component`是一個(gè)通用的注解,用于標(biāo)識(shí)一個(gè)類是Spring框架中的組件。`@Component`注解是Spring的核心注解之一,它提供了自動(dòng)掃描和實(shí)例化bean的功能。 具體來說, `@Component`注解的作用是將一個(gè)普通的Java類轉(zhuǎn)化為Spring的組件。通過`@Component`注解標(biāo)記的類會(huì)被Spring框

    2024年02月11日
    瀏覽(29)
  • Spring Boot入門(04):SpringBoot實(shí)現(xiàn)多環(huán)境配置文件切換 | 超級(jí)詳細(xì),建議收藏

    Spring Boot入門(04):SpringBoot實(shí)現(xiàn)多環(huán)境配置文件切換 | 超級(jí)詳細(xì),建議收藏

    ? ? ? ? 在開發(fā)和部署Spring Boot應(yīng)用的過程中,經(jīng)常需要在不同的環(huán)境中進(jìn)行配置,比如開發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán)境等。為了方便管理和部署,我們需要實(shí)現(xiàn)多環(huán)境配置文件切換。本篇教程將帶你輕松搞定不同環(huán)境部署問題,讓你的應(yīng)用在各個(gè)環(huán)境中穩(wěn)定運(yùn)行。無論你是

    2024年02月12日
    瀏覽(31)
  • Spring Boot進(jìn)階(55):SpringBoot之集成MongoDB及實(shí)戰(zhàn)使用 | 超級(jí)詳細(xì),建議收藏

    Spring Boot進(jìn)階(55):SpringBoot之集成MongoDB及實(shí)戰(zhàn)使用 | 超級(jí)詳細(xì),建議收藏

    ????????隨著大數(shù)據(jù)時(shí)代的到來,數(shù)據(jù)存儲(chǔ)和處理變得越來越重要。而MongoDB作為一種非關(guān)系型數(shù)據(jù)庫(kù),具有高效的數(shù)據(jù)存儲(chǔ)和處理能力,被越來越多地應(yīng)用于各種領(lǐng)域。尤其在Web應(yīng)用開發(fā)中,SpringBoot框架已經(jīng)成為了主流選擇之一。在這篇文章中,我們將探討如何將MongoD

    2024年02月17日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包