久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Java-Bean Validation后端校驗總結(jié)

 冒險的K 2021-09-15

Validation


Information resource:

SpringBoot Docs: 2.8.9. @ConfigurationProperties Validation

url: https://docs./spring-boot/docs/2.3.12.RELEASE/reference/html/spring-boot-features.html#boot-features


Spring Boot attempts to validate @ConfigurationProperties classes whenever they are annotated with Spring’s @Validated annotation. You can use JSR-303 javax.validation constraint annotations directly on your configuration class. To do so, ensure that a compliant JSR-303 implementation is on your classpath and then add constraint annotations to your fields, as shown in the following example:

每當(dāng)使用 Spring 的 @Validated 注釋時,,Spring Boot 都會嘗試驗證 @ConfigurationProperties 類,。 可以直接在配置類上使用 JSR-303 javax.validation 約束注釋。 為此,,請確保類路徑上有一個兼容的 JSR-303 實現(xiàn),然后向字段添加約束注釋,如以下示例所示:

@ConfigurationProperties(prefix="acme")
@Validated
public class AcmeProperties {

    @NotNull
    private InetAddress remoteAddress;

    // ... getters and setters

}


You can also trigger validation by annotating the @Bean method that creates the configuration properties with @Validated.

還可以通過注釋使用@Validated 創(chuàng)建配置屬性的@Bean 方法來觸發(fā)驗證。


To ensure that validation is always triggered for nested properties, even when no properties are found, the associated field must be annotated with @Valid. The following example builds on the preceding AcmeProperties example:

為確保始終為嵌套屬性觸發(fā)驗證,,即使未找到任何屬性,也必須使用 @Valid 注釋關(guān)聯(lián)字段,。 以下示例建立在前面的 AcmeProperties 示例之上:

@ConfigurationProperties(prefix="acme")
@Validated
public class AcmeProperties {

    @NotNull
    private InetAddress remoteAddress;

    @Valid
    private final Security security = new Security();

    // ... getters and setters

    public static class Security {

        @NotEmpty
        public String username;

        // ... getters and setters
    }
}


JSR-303 Validation


JSR-303 是Java EE的一個子規(guī)范,,官方參考實現(xiàn)Hibernate Validator

JSR-303 是一個數(shù)據(jù)驗證的規(guī)范,,而Hibernate Validator則是實現(xiàn)了這一規(guī)范,,可以使用注解的方式對Bean進行驗證,它的內(nèi)部已經(jīng)定義好了一系列的限制注解,,只需將需要的注解標(biāo)注在需要驗證的實體類的屬性上或者是對應(yīng)的get方法上即可


JSR-303常用校驗規(guī)則


布爾檢查

注解描述
@AssertFalse被標(biāo)注的對象是否為False
@AssertTrue被標(biāo)注的對象是否為True


空值檢查

注解描述
@Null驗證被標(biāo)注的對象是否為NULL
@NotNull驗證被標(biāo)注的對象是否不為NULL
@NotBlank驗證字符串是否非空,,trim()后不為"",,長度大于0
@NotEmpty驗證被標(biāo)注對象是否為非空


長度檢查

注解描述
@Length(min,max)驗證字符串長度是否在min,max范圍內(nèi)
@Size(min,max)驗證對象(Collection,String,Map,Array)是否在規(guī)定范圍內(nèi)


日期檢查

注解描述
@Past驗證時間對象的值是否在當(dāng)前時間之前
@Future驗證時間對象的值是否在當(dāng)前時間之后
@Pattern(regexp)驗證字符串是否符合指定的正則表達式


數(shù)值檢查

注解描述
@Email驗證被標(biāo)注對象是否為郵箱格式,NULL值不驗證
@Valid關(guān)聯(lián)對象是數(shù)組或集合時,,對其元素進行校驗
@Digits(integer,fraction)驗證字符串是否是符合指定格式的數(shù)字,,integer整數(shù)精度,fraction小數(shù)精度
@Min驗證字符串是否是大于Min指定的最小值的數(shù)字
@Max驗證字符串是否是小于Max指定的最大值的數(shù)字
@Range(min,max)驗證元素是否在min,max范圍內(nèi)


使用Hibernate Validator的Demo


Demo的項目結(jié)構(gòu):


pom.xml

org.hibernate.validatorhibernate-validator${hibernate-validator.version}


User(Bean)

/**
 * @Email 約束輸入郵件的格式
 * @NotBlank 指字符串使用trim()去掉前后空格后,,不能夠為空
 */
@ToString
@AllArgsConstructor
@NoArgsConstructor
@Data
public class User implements Serializable {

    @NotBlank(message = "郵箱不能為空")
    @Email(message = "郵箱非法")
    private String userEmail;

    @NotBlank(message = "電話不能為空")
    @Pattern(regexp = "^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$",message = "手機號非法")
    private String userPhone;
}


UserController

/**
 * 以POST請求為例
 * @Validated 注釋類
 * @RequestBody 可傳Javabean類型
 * @RequestParam 傳單個參數(shù)
 * @Valid 修飾在Javabean類型前
 */
@RestController
@Validated
public class UserController {

    @RequestMapping(value = "/test",method = RequestMethod.POST)
    public boolean test(@RequestBody @Valid User user){
        return true;
    }

    @RequestMapping(value = "/hello",method = RequestMethod.GET)
    public String hello(){
        return "hello,world";
    }
}


Rusult:Postman發(fā)個請求瞅瞅結(jié)果

  • 輸入正確格式的郵箱和手機


  • 輸入非法格式的郵箱


  • 輸入非法格式的手機號碼


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多