接口参数校验利器: @Validated 和 @Valid 的奥秘
2022-12-25 16:41:57
Spring Boot 中的参数校验神器:@Validated 和 @Valid
在当今互联网开发的浩瀚海洋中,API 的方兴未艾已成为企业角逐的焦点。为了保障 API 的平稳航行和数据质量的稳固,参数校验是必不可少的航标。而在 Spring Boot 的世界里,@Validated 和 @Valid 这两位船长就是引领我们轻松实现参数校验的得力助手。让我们一起扬帆起航,探寻他们的神奇之处,揭开他们协奏的奥秘。
@Validated:掌控全局的船长
@Validated 是一位元注解,它犹如一艘引航船,统筹其他校验注解的执行。在使用 @Validated 注解之前,我们需要引入相关的校验库,例如 hibernate-validator。当我们用 @Validated 标注一个类或方法时,它就会自动对该类或方法的参数进行校验。
检验的基准就是我们熟悉的校验注解,比如 @NotNull、@Size、@Email 等。当我们用这些校验注解标注参数时,Spring Boot 就会在运行时刻自动对这些参数进行检验。如果参数不符合校验规则,Spring Boot 就会升起相应的警示旗帜,抛出异常并返回错误信息。
@Valid:参数卫士的魔法
@Valid 注解是一位校验注解,它犹如一艘护卫舰,与 @Validated 携手合作,共同守护方法的参数。当我们用 @Valid 注解标注一个方法参数时,Spring Boot 就会自动对这个参数进行校验。如果参数不符合校验规则,Spring Boot 也会升起警示旗帜,抛出异常并返回错误信息。
需要注意的是,@Valid 注解只适用于方法参数,它不能直接标注类或方法。如果我们想对整个类或方法进行校验,就需要使用 @Validated 注解。
默契协作,无往不胜
@Validated 和 @Valid 注解堪称参数校验界的黄金搭档,它们默契配合,可以帮助我们轻松实现参数校验。其中,@Validated 掌控全局,协调校验注解的执行,而 @Valid 则负责对方法参数进行校验。
在实际开发中,我们可以根据需要选择使用 @Validated 或 @Valid 注解。如果我们需要对整个类或方法进行校验,可以使用 @Validated 注解。如果我们只需要对方法参数进行校验,可以使用 @Valid 注解。
代码示例
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
public class User {
@NotNull
private String name;
@NotNull
private Integer age;
//省略其他代码...
}
public class UserController {
public void createUser(@Valid User user) {
//省略其他代码...
}
}
常见问题解答
-
@Validated 和 @Valid 有什么区别?
- @Validated 是一个元注解,它协调其他校验注解的执行。@Valid 是一个校验注解,它用于校验方法参数。
-
什么时候使用 @Validated,什么时候使用 @Valid?
- 如果需要对整个类或方法进行校验,可以使用 @Validated。如果只需要对方法参数进行校验,可以使用 @Valid。
-
如何使用 @Validated 和 @Valid?
- 在需要校验的类或方法上使用 @Validated 或 @Valid 注解,并用校验注解标注具体需要校验的参数。
-
@Validated 和 @Valid 可以一起使用吗?
- 可以。@Validated 可以用于校验类或方法,而 @Valid 可以用于校验方法参数。
-
使用 @Validated 和 @Valid 有什么好处?
- 可以轻松实现参数校验,确保 API 的稳定运行和数据质量。