下面是Spring Boot使用Validation做参数校验的攻略:
什么是Validation
Validation是一种Java Bean Validation规范的实现,它提供了一种声明式验证的方式,可以在不依赖业务逻辑的情况下对请求参数进行校验,从而避免了代码重复和漏写校验的问题。
如何使用Validation
第一步:添加Validation依赖
在Maven的pom.xml
文件中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
第二步:创建一个Java Bean
在使用Validation之前,需要先定义一个Java Bean,这个Bean的字段就是要校验的参数。例如,下面是一个简单的Java Bean示例:
public class User {
@NotNull
private Integer id;
@NotBlank
private String name;
@Email
private String email;
//getters and setters
}
在这个类中,我们定义了三个属性:id、name和email。在这三个属性上分别使用了@NotNull、@NotBlank和@Email注解进行校验。
第三步:添加校验逻辑
在Controller方法中,添加@Valid
注解即可对请求的参数进行校验:
@RestController
@RequestMapping("/users")
public class UserController {
@PostMapping
public ResponseEntity<User> addUser(@Valid @RequestBody User user) {
//添加用户到数据库
}
}
在上面的代码中,@Valid
注解表示对参数进行校验。如果校验失败,将会抛出一个MethodArgumentNotValidException
异常。如果校验成功,将会继续执行addUser
方法。
第四步:处理校验异常
当校验失败时,Spring Boot将会抛出MethodArgumentNotValidException
异常。我们需要对这个异常进行处理。
一种处理方式是使用@ExceptionHandler
注解,像下面这样:
@RestControllerAdvice
public class GlobalControllerExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<ErrorResponse> handleValidationException(MethodArgumentNotValidException ex) {
BindingResult bindingResult = ex.getBindingResult();
ErrorResponse errorResponse = new ErrorResponse();
errorResponse.setCode("400");
errorResponse.setMessage(bindingResult.getFieldErrors().get(0).getDefaultMessage());
return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST);
}
}
这种方式将会捕获所有的MethodArgumentNotValidException
异常,并将异常信息封装到一个ErrorResponse对象中返回。
示例1:校验参数不为null
在Java Bean中使用@NotNull注解即可校验参数不为null:
public class User {
@NotNull
private Integer id;
//其他属性
}
@RestController
@RequestMapping("/users")
public class UserController {
@PostMapping
public ResponseEntity<User> addUser(@Valid @RequestBody User user) {
//处理请求
}
}
示例2:校验字符串不为空
在Java Bean中使用@NotBlank注解即可校验字符串不为空:
public class User {
@NotBlank
private String name;
//其他属性
}
@RestController
@RequestMapping("/users")
public class UserController {
@PostMapping
public ResponseEntity<User> addUser(@Valid @RequestBody User user) {
//处理请求
}
}
至此,Spring Boot使用Validation做参数校验的攻略就介绍完了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot使用validation做参数校验说明 - Python技术站