SpringBoot?Validation快速實(shí)現(xiàn)數(shù)據(jù)校驗(yàn)的示例代碼
前言
在實(shí)際開(kāi)發(fā)中,肯定會(huì)經(jīng)常遇到對(duì)參數(shù)字段進(jìn)行校驗(yàn)的場(chǎng)景,雖然大多數(shù)情況下前端都會(huì)進(jìn)行校驗(yàn),但我們知道前端并不可信,所以后臺(tái)也需要進(jìn)行校驗(yàn),通常我們只能寫(xiě)大量的if else
來(lái)完成校驗(yàn)工作,而如果使用SpringBoot Validation
則可以輕松的通過(guò)注解來(lái)完成。
環(huán)境配置
引入Jar包
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>
使用示例
@Data @ToString public class DemoEntity { // 不能為空,比較時(shí)會(huì)除去空格 @NotBlank(message = "名稱(chēng)不能為空") private String name; // amount必須是一個(gè)大于等于5,小于等于10的數(shù)字 @DecimalMax(value = "10") @DecimalMin(value = "5") private BigDecimal amount; // 必須符合email格式 @Email private String email; // size長(zhǎng)度必須在5到10之間 @Size(max = 10, min = 5) private String size; // age大小必須在18到35之間 @Min(value = 18) @Max(value = 35) private int age; // user不能為null @NotNull private User user; // 限制必須為小數(shù),且整數(shù)位integer最多2位,小數(shù)位fraction最多為4位 @Digits(integer = 2, fraction = 4) private BigDecimal digits; // 限制必須為未來(lái)的日期 @Future private Date future; // 限制必須為過(guò)期的日期 @Past private Date past; // 限制必須是一個(gè)未來(lái)或現(xiàn)在的時(shí)間 @FutureOrPresent private Date futureOrPast; // 支持正則表達(dá)式 @Pattern(regexp = "^\\d+$") private String digit; }
注意:請(qǐng)求時(shí),參數(shù)必須加上@Validated
才能生效
@RestController @Slf4j @RequestMapping("/valid") public class TestValidController { @RequestMapping("/demo1") public String demo12(@Validated @RequestBody DemoEntity demoEntity) { try { return "SUCCESS"; } catch (Exception e) { log.error(e.getMessage(), e); return "FAIL"; } } }
分組
有些時(shí)候,同一個(gè)參數(shù)在不能場(chǎng)景下校驗(yàn)的規(guī)則可能不一樣,這時(shí)候我們就可以通過(guò)分組的方式來(lái)實(shí)現(xiàn)
實(shí)體類(lèi)name
屬性設(shè)置了兩種校驗(yàn),分別針對(duì)groups
為A和B的生效
@NotBlank(message = "名稱(chēng)不能為空", groups = A.class) @Size(max = 10, min = 5, groups = B.class) private String name;
只要在相對(duì)應(yīng)的接口上選擇A或者B即可
@RestController @Slf4j @RequestMapping("/valid") public class TestValidController { @RequestMapping("/demo1") public String demo1(@Validated({A.class}) @RequestBody DemoEntity demoEntity) { try { return "SUCCESS"; } catch (Exception e) { log.error(e.getMessage(), e); return "FAIL"; } } @RequestMapping("/demo2") public String demo2(@Validated({B.class}) @RequestBody DemoEntity demoEntity) { try { return "SUCCESS"; } catch (Exception e) { log.error(e.getMessage(), e); return "FAIL"; } } }
到此這篇關(guān)于利用SpringBoot Validation快速實(shí)現(xiàn)數(shù)據(jù)校驗(yàn)的文章就介紹到這了,更多相關(guān)SpringBoot Validation數(shù)據(jù)校驗(yàn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot創(chuàng)建非可執(zhí)行jar包的實(shí)例教程
這篇文章主要介紹了Spring Boot創(chuàng)建非可執(zhí)行jar包的實(shí)例教程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02使用jaxws建立webservice客戶端并實(shí)現(xiàn)soap消息的handler驗(yàn)證示例
這篇文章主要介紹了使用jaxws建立webservice客戶端并實(shí)現(xiàn)soap消息的handler驗(yàn)證示例,需要的朋友可以參考下2014-03-03spring-boot通過(guò)@Scheduled配置定時(shí)任務(wù)及定時(shí)任務(wù)@Scheduled注解的方法
這篇文章主要介紹了spring-boot通過(guò)@Scheduled配置定時(shí)任務(wù),文中還給大家介紹了springboot 定時(shí)任務(wù)@Scheduled注解的方法,需要的朋友可以參考下2017-11-11JVM系列之:再談java中的safepoint說(shuō)明
這篇文章主要介紹了JVM系列之:再談java中的safepoint說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09springboot不同環(huán)境使用不同配置文件打包方式
這篇文章主要介紹了springboot不同環(huán)境使用不同配置文件打包方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11Java+Swing實(shí)現(xiàn)醫(yī)院管理系統(tǒng)的完整代碼
這篇文章主要介紹了Java+Swing實(shí)現(xiàn)醫(yī)院管理系統(tǒng)的完整代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05