Spring Boot 官網(wǎng)關(guān)于數(shù)據(jù)校驗(yàn)例嘱,只有寥寥幾句,而且例子也相當(dāng)簡(jiǎn)單宁舰,如下:
@Service
@Validated
public class MyBean {
public Archive findByCodeAndAuthor(@Size(min = 8, max = 10) String code,
Author author) {
...
}
}
但在使用過(guò)程中拼卵,還是遇到一些問(wèn)題,下面記錄下使用記錄蛮艰,以防以后忘記腋腮。
首先看下 pom.xml
文件,詳細(xì)如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>learn-spring-boot</artifactId>
<groupId>com.lushwe.learn</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>spring-boot-exception</artifactId>
<name>spring-boot-exception</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 引入數(shù)據(jù)校驗(yàn)starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!-- 引入數(shù)據(jù)工具 -->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
實(shí)例一
@Validated
@RestController
public class UserController {
@GetMapping("/users/{id}")
public String getUserById(@Min(value = 1, message = "參數(shù)不合法") @PathVariable("id") Long id) {
return "zhangsan";
}
}
- 注:
-
UserController
類上面需要加@Validated
注解
-
實(shí)例二
@Validated
@RestController
public class UserController {
@GetMapping(value = "/users")
public String listUsers(@Valid UserReq userReq, Errors errors) {
return "";
}
}
@Data
public class UserReq {
@NotNull(message = "不能為空")
private Long userId;
}
- 注:
-
UserReq
類前面需要加@Valid
注解壤蚜,否則UserReq
類里面的校驗(yàn)不生效 -
UserReq
類后面需要緊跟Errors
類即寡,用于接收錯(cuò)誤,否則會(huì)一直報(bào)400
錯(cuò)誤
-