从图片中可以看到,@Validated
是一个 Spring Framework 提供的注解,主要用于支持 Bean Validation 的分组校验功能。以下是它的主要作用和使用场景:
1. 启用参数校验
当 @Validated
注解标记在类、方法或参数上时,它会启用参数校验功能。常见的校验规则包括:
@NotNull
@Size
@Min
和@Max
@Pattern
这些校验注解来自 Java 的 Bean Validation API(如 Hibernate Validator)。
2. 支持分组校验
@Validated
和 @Valid
不同的一点是它可以指定校验分组。例如:
public class User {
@NotNull(groups = Create.class)
private String name;
@NotNull(groups = Update.class)
private Integer id;
public interface Create {}
public interface Update {}
}
当使用 @Validated
时,可以指定具体分组来触发相应的校验:
@PostMapping
public void createUser(@Validated(Create.class) @RequestBody User user) {
// 只校验 Create 分组的规则
}
3. 结合 Spring 的 Controller 使用
你图片中,@Validated
应该是用于对 REST 接口的请求参数进行校验。比如:
- 如果方法参数是
@RequestBody
的 DTO 对象,那么@Validated
会校验 DTO 的字段是否符合规则。 - 如果方法参数是
@PathVariable
或@RequestParam
,同样可以校验这些参数。
4. 运行时异常处理
当校验失败时,Spring 会抛出 MethodArgumentNotValidException
或 ConstraintViolationException
,可以通过全局异常处理器(@ControllerAdvice
)来捕获:
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<?> handleValidationException(MethodArgumentNotValidException ex) {
// 返回错误信息
return ResponseEntity.badRequest().body(ex.getBindingResult().getAllErrors());
}
}
总结
@Validated
是 Spring 提供的参数校验注解,主要用于:
- 启用 Bean Validation。
- 支持分组校验。
- 配合 RESTful 接口参数验证,提升数据校验的灵活性。
如果你只需要简单校验,不需要分组,可以直接使用 @Valid
。