Spring Boot的@Validated的作用与使用方法
@Validated的作用
@Validated是Spring Boot框架中的一个注解,用于在控制器方法参数上添加校验规则。它可以对请求参数进行校验,确保参数的合法性。@Validated注解可以用于类和方法上。
@Validated的使用方法
1. 在类上使用@Validated
在类上使用@Validated注解,可以对该类中的所有控制器方法参数进行校验。例如:
@RestController
@RequestMapping("/users")
@Validated
public class UserController {
@PostMapping
public User createUser(@RequestBody @Valid User user) {
// 创建用户
}
}
在上述示例中,使用@RestController注解标记了一个控制器类,并使用@RequestMapping注解指定了请求路径。使用@Validated注解对该类中的所有控制器方法参数进行校验。使用@PostMapping注解将HTTP POST请求映射到createUser方法上,并使用@RequestBody注解将请求参数绑定到方法的参数上。使用@Valid注解对请求参数进行校验。
2. 在方法上使用@Validated
在方法上使用@Validated注解,可以对指定方法的参数进行校验。例如:
@RestController
@RequestMapping("/users")
public class UserController {
@PostMapping
public User createUser(@RequestBody @Valid User user) {
// 创建用户
}
@PatchMapping("/{id}")
public User updateUser(@PathVariable Long id, @RequestBody @Validated(UpdateGroup.class) User user) {
// 更新用户信息
}
}
在上述示例中,使用@PostMapping注解将HTTP POST请求映射到createUser方法上,并使用@RequestBody注解将请求参数绑定到方法的参数上。使用@Valid注解对请求参数进行校验。使用@PatchMapping注解将HTTP PATCH请求映射到updateUser方法上,并使用@RequestBody注解将请求参数绑定到方法的参数上。使用@Validated注解对请求参数进行校验,并指定了校验分组。
@Validated的示例
下面是一个使用@Validated注解的示例:
@RestController
@RequestMapping("/users")
@Validated
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@PostMapping
public User createUser(@RequestBody @Valid User user) {
return userService.createUser(user);
}
@PatchMapping("/{id}")
public User updateUser(@PathVariable Long id, @RequestBody @Validated(UpdateGroup.class) User user) {
return userService.updateUser(id, user);
}
}
在上述示例中,使用@Validated注解对该类中的所有控制器方法参数进行校验。使用@PostMapping注解将HTTP POST请求映射到createUser方法上,并使用@RequestBody注解将请求参数绑定到方法的参数上。使用@Valid注解对请求参数进行校验。使用@PatchMapping注解将HTTP PATCH请求映射到updateUser方法上,并使用@RequestBody注解将请求参数绑定到方法的参数上。使用@Validated注解对请求参数进行校验,并指定了校验分组。
下面是另一个使用@Validated注解的示例:
@RestController
@RequestMapping("/users")
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@PostMapping
public User createUser(@RequestBody @Valid User user) {
return userService.createUser(user);
}
@PatchMapping("/{id}")
public User updateUser(@PathVariable Long id, @RequestBody @Validated(UpdateGroup.class) User user) {
return userService.updateUser(id, user);
}
}
public class User {
@NotNull
private Long id;
@NotBlank
private String name;
@Min(18)
private Integer age;
// 省略其他属性和方法
}
public interface UpdateGroup {}
public interface CreateGroup {}
在上述示例中,使用@Valid注解对User类中的属性进行校验。使用@Validated注解对updateUser方法中的请求参数进行校验,并指定了校验分组。定义了UpdateGroup和CreateGroup两个校验分组,用于对不同的请求参数进行不同的校验。
总结
@Validated是Spring Boot框架中的一个注解,用于在控制器方法参数上添加校验规则。它可以对请求参数进行校验,确保参数的合法性。@Validated注解可以用于类和方法上,可以根据需要选择使用。在实际开发中,我们可以根据需要定义校验规则和校验分组,以便对不同的请求参数进行不同的校验。