SpringBoot实现各种参数校验,写得太好了,建议收藏!
在Spring Boot中实现各种参数验证,可以使用@Validated
注解和JSR-380(Java Specification Requests for Java EE 8)中的@Valid
注解。以下是一些实例代码:
- 使用
@Validated
进行分组校验:
public interface CreateGroup {}
public interface UpdateGroup {}
@RestController
@RequestMapping("/users")
public class UserController {
@PostMapping
public ResponseEntity<?> createUser(@Validated({CreateGroup.class}) @RequestBody User user) {
// ...
}
@PutMapping("/{id}")
public ResponseEntity<?> updateUser(@Validated({UpdateGroup.class}) @RequestBody User user) {
// ...
}
}
- 使用
@Valid
进行常规校验:
@RestController
@RequestMapping("/users")
public class UserController {
@PostMapping
public ResponseEntity<?> createUser(@Valid @RequestBody User user, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
// 处理错误信息
}
// ...
}
}
- 使用
@Validated
和@Valid
进行嵌套校验:
public class User {
@NotNull(message = "姓名不能为空", groups = {CreateGroup.class, UpdateGroup.class})
private String name;
@Valid
private Address address;
// ...
}
public class Address {
@NotNull(message = "地址不能为空", groups = {CreateGroup.class, UpdateGroup.class})
private String street;
// ...
}
确保在pom.xml
中添加了以下依赖以使用@Validated
和@Valid
注解:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
以上代码展示了如何在Spring Boot中使用@Validated
和@Valid
注解进行参数验证,并且如何在实体类中通过分组来实现不同的校验规则。
评论已关闭