2025-01-16T01:35:48.png
从图片中可以看到,@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 会抛出 MethodArgumentNotValidExceptionConstraintViolationException,可以通过全局异常处理器(@ControllerAdvice)来捕获:

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResponseEntity<?> handleValidationException(MethodArgumentNotValidException ex) {
        // 返回错误信息
        return ResponseEntity.badRequest().body(ex.getBindingResult().getAllErrors());
    }
}

总结

@Validated 是 Spring 提供的参数校验注解,主要用于:

  1. 启用 Bean Validation。
  2. 支持分组校验。
  3. 配合 RESTful 接口参数验证,提升数据校验的灵活性。

如果你只需要简单校验,不需要分组,可以直接使用 @Valid

最后修改:2025 年 01 月 16 日
如果觉得我的文章对你有用,请随意赞赏