让我来详细讲解“Spring Boot 数据校验@Valid+统一异常处理的实现”的完整攻略。
1. 设置依赖
在 pom.xml
文件中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 添加 validation 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!-- 添加统一异常处理依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
2. 实体类参数校验
在实体类参数上使用注解来指定校验规则。示例中创建了一个User
实体类并添加了校验规则。其中,name
字段必须填写,长度为 2 至 12 个字符,age
字段必须在 0 至 120 之间。
public class User {
@NotBlank(message = "名字不能为空")
@Length(min = 2, max = 12, message = "名字长度需在 2 到 12 个字符之间")
private String name;
@Range(min = 0, max = 120, message = "年龄需在 0 到 120 岁之间")
private int age;
// Getters and Setters
}
3. 控制层方法参数校验
在控制层方法参数上使用 @Valid
注解来启用校验。
@PostMapping("/user")
public ResponseEntity<String> addUser(@Valid @RequestBody User user) {
// 处理添加用户请求
return ResponseEntity.ok("用户添加成功");
}
4. 统一处理异常
使用 @ExceptionHandler
注解来处理校验异常。首先创建一个自定义的异常类 ValidationException
,并在控制层中使用 @ExceptionHandler
注解来捕获此异常并返回异常信息:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(ValidationException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ResponseBody
public Map<String, Object> handleValidationException(ValidationException e) {
Map<String, Object> error = new HashMap<>();
error.put("code", HttpStatus.BAD_REQUEST.value());
error.put("message", e.getMessage());
return error;
}
}
public class ValidationException extends RuntimeException {
public ValidationException(String message) {
super(message);
}
}
5. 测试示例
示例 1:参数校验失败
发送如下请求:
POST /user HTTP/1.1
Content-Type: application/json
{
"name": "",
"age": 150
}
返回如下信息:
HTTP/1.1 400 Bad Request
{
"code": 400,
"message": "名字不能为空"
}
示例 2:参数校验成功
发送如下请求:
POST /user HTTP/1.1
Content-Type: application/json
{
"name": "Tom",
"age": 21
}
返回如下信息:
HTTP/1.1 200 OK
"用户添加成功"
以上是“Spring Boot 数据校验@Valid+统一异常处理的实现”的完整攻略,希望能对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot 数据校验@Valid+统一异常处理的实现 - Python技术站