SpringBoot?Validation快速實(shí)現(xiàn)數(shù)據(jù)校驗(yàn)的示例代碼
前言
在實(shí)際開發(fā)中,肯定會經(jīng)常遇到對參數(shù)字段進(jìn)行校驗(yàn)的場景,雖然大多數(shù)情況下前端都會進(jìn)行校驗(yàn),但我們知道前端并不可信,所以后臺也需要進(jìn)行校驗(yàn),通常我們只能寫大量的if else來完成校驗(yàn)工作,而如果使用SpringBoot Validation則可以輕松的通過注解來完成。
環(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 {
// 不能為空,比較時會除去空格
@NotBlank(message = "名稱不能為空")
private String name;
// amount必須是一個大于等于5,小于等于10的數(shù)字
@DecimalMax(value = "10")
@DecimalMin(value = "5")
private BigDecimal amount;
// 必須符合email格式
@Email
private String email;
// size長度必須在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;
// 限制必須為未來的日期
@Future
private Date future;
// 限制必須為過期的日期
@Past
private Date past;
// 限制必須是一個未來或現(xiàn)在的時間
@FutureOrPresent
private Date futureOrPast;
// 支持正則表達(dá)式
@Pattern(regexp = "^\\d+$")
private String digit;
}
注意:請求時,參數(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ù)在不能場景下校驗(yàn)的規(guī)則可能不一樣,這時候我們就可以通過分組的方式來實(shí)現(xiàn)
實(shí)體類name屬性設(shè)置了兩種校驗(yàn),分別針對groups為A和B的生效
@NotBlank(message = "名稱不能為空", groups = A.class) @Size(max = 10, min = 5, groups = B.class) private String name;
只要在相對應(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot創(chuàng)建非可執(zhí)行jar包的實(shí)例教程
這篇文章主要介紹了Spring Boot創(chuàng)建非可執(zhí)行jar包的實(shí)例教程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02
使用jaxws建立webservice客戶端并實(shí)現(xiàn)soap消息的handler驗(yàn)證示例
這篇文章主要介紹了使用jaxws建立webservice客戶端并實(shí)現(xiàn)soap消息的handler驗(yàn)證示例,需要的朋友可以參考下2014-03-03
spring-boot通過@Scheduled配置定時任務(wù)及定時任務(wù)@Scheduled注解的方法
這篇文章主要介紹了spring-boot通過@Scheduled配置定時任務(wù),文中還給大家介紹了springboot 定時任務(wù)@Scheduled注解的方法,需要的朋友可以參考下2017-11-11
springboot不同環(huán)境使用不同配置文件打包方式
這篇文章主要介紹了springboot不同環(huán)境使用不同配置文件打包方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11
Java+Swing實(shí)現(xiàn)醫(yī)院管理系統(tǒng)的完整代碼
這篇文章主要介紹了Java+Swing實(shí)現(xiàn)醫(yī)院管理系統(tǒng)的完整代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-05-05

