springboot提供的@Validated注解的作用
时间: 2023-08-03 08:37:03 浏览: 187
`@Validated`注解是Spring框架提供的一种参数校验注解。它可以用来替代Java标准库中的`@Valid`注解,并且支持分组校验等功能。
`@Validated`注解可以用在类、方法、构造函数、方法参数以及方法返回值上。它的作用是启用方法参数校验。当方法被调用时,如果参数上标注了`@Validated`注解,则会对该参数进行校验。如果校验失败,则会抛出`MethodArgumentNotValidException`异常。
除了支持Java标准库中的参数校验注解之外,`@Validated`注解还支持分组校验功能。即可以根据不同的校验场景,对同一个类中的不同属性进行不同的校验。例如:
```java
public interface Update {
}
public interface Create {
}
public class User {
@NotNull(groups = Update.class)
private Long id;
@NotBlank(groups = {Create.class, Update.class})
private String name;
@Min(value = 18, message = "年龄不能小于18岁", groups = {Create.class, Update.class})
private Integer age;
// 省略getter和setter方法
}
```
在上面的代码中,定义了两个分组`Create`和`Update`,并在`User`类中使用了分组校验注解。其中,`id`属性只在更新用户信息时进行校验,`name`和`age`属性在创建和更新用户信息时都需要进行校验。当进行校验时,需要指定对应的分组,例如:
```java
@RestController
@RequestMapping("/user")
@Validated
public class UserController {
@PostMapping("/create")
public ResponseEntity createUser(@RequestBody @Validated(Create.class) User user) {
// ...
}
@PostMapping("/update")
public ResponseEntity updateUser(@RequestBody @Validated(Update.class) User user) {
// ...
}
}
```
在上面的代码中,`@Validated(Create.class)`注解表示对`User`对象中标注了`Create`分组的属性进行校验,`@Validated(Update.class)`注解表示对`User`对象中标注了`Update`分组的属性进行校验。
综上所述,`@Validated`注解可以用来替代Java标准库中的`@Valid`注解,并且支持分组校验等功能。
阅读全文