[Solutions] <Validation> 参数校验详解转载并补充

本文详细介绍了Spring的参数校验机制,包括嵌套校验、集合校验以及编程式校验的两种方法,并讨论了快速失败(Fail Fast)的配置。通过示例展示了如何利用javax.validation注解简化校验代码,提高代码的可读性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参数校验(validator)详解_一样的霸笔的博客-优快云博客_validator作者:锦成同学juejin.im/post/5d3fbeb46fb9a06b317b3c48很痛苦遇到大量的参数进行校验,在业务中还要抛出异常或者不断的返回异常时的校验信息,在代码中相当冗长, 充满了if-else这种校验代码,今天我们就来学习spring的javax.validation 注解式参数校验.为什么要用validator1.javax.validation的一系列注...https://blog.youkuaiyun.com/xnn_fjj/article/details/100603270

 嵌套校验

        当需要校验的对象的某个字段也是一个对象,这种情况先,可以使用嵌套校验。

  1. 对应字段必须标记@Valid注解
  2. 对应类中添加校验规则注解
@Data
public class UserDTO {

   @Min(value = 10000000000L, groups = Update.class)
   private Long userId;

   @NotNull(groups = {Save.class, Update.class})
   @Length(min = 2, max = 10, groups = {Save.class, Update.class})
   private String userName;

   @NotNull(groups = {Save.class, Update.class})
   @Length(min = 6, max = 20, groups = {Save.class, Update.class})
   private String account;

   @NotNull(groups = {Save.class, Update.class})
   @Length(min = 6, max = 20, groups = {Save.class, Update.class})
   private String password;

   @NotNull(groups = {Save.class, Update.class})
   @Valid
   private Job job;

   @Data
   public static class Job {

       @Min(value = 1, groups = Update.class)
       private Long jobId;

       @NotNull(groups = {Save.class, Update.cla
### 添加和配置 `spring-boot-starter-validation` 依赖 为了在 Maven 项目中成功添加配置 `spring-boot-starter-validation` 依赖,可以按照以下方式操作: #### 修改 `pom.xml` 在项目的 `pom.xml` 文件中加入如下代码片段来引入 `spring-boot-starter-validation` 的具体版本号 `2.3.3.RELEASE`。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> <version>2.3.3.RELEASE</version> </dependency> ``` 如果已经定义了一个 Spring Boot 父级 POM,则无需指定具体的版本号。父级 POM 将管理这些依赖项的版本[^2]。例如,在这种情况下只需要这样写入即可: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> ``` #### 配置验证功能 一旦上述依赖被正确加载到您的项目中,您可以利用 Hibernate Validator 来实现 Bean Validation API 功能。这通常用于表单提交或者数据传输对象 (DTOs) 中的数据校验。下面是一个简单的例子展示如何应用注解来进行字段级别的约束设置。 假设我们有一个 User 类需要进行一些基本的信息检验: ```java import javax.validation.constraints.Email; import javax.validation.constraints.NotBlank; public class User { @NotBlank(message = "用户名不能为空") private String username; @Email(message = "邮箱地址不合法") private String email; // getters and setters omitted for brevity } ``` 通过这种方式,当您尝试保存不符合条件的对象实例时,将会抛出 ConstraintViolationException 异常提示错误信息[^1]。 #### 更新本地仓库缓存 有时即使 pom 文件配置无误仍会遇到无法解析依赖的情况,此时建议执行命令强制更新远程存储库中的工件副本至本地磁盘上: ```bash mvn clean install -U ``` 此命令能够帮助解决因网络延迟等原因造成的临时性资源获取失败问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值