SpringBoot参数校验:@Valid 与 @Validated 详解

SpringBoot参数校验:@Valid 与 @Validated 详解


一、案例(参数校验的必要性)

传统方式(无注解)的缺点:

// 需要手动校验每个字段,代码冗余且易出错
public String register(User user) {
   
   
    // 手动校验每个字段
    if (user.getEmail() == null || !isValidEmail(user.getEmail())) {
   
   
        throw new IllegalArgumentException("邮箱格式错误");
    }
    if (user.getPassword().length() < 8) {
   
   
        throw new IllegalArgumentException("密码长度需≥8位");
    }
    // 校验逻辑与业务代码耦合,难以复用
}

问题总结

  • 代码冗余:相同校验逻辑重复编写
  • 维护困难:校验规则分散,修改成本高
  • 可读性差:业务逻辑被大量if-else淹没

注解方式的优势

public class User {
   
   
    @Email(message = "邮箱格式不合法")  // 一行注解替代复杂校验
    private String email;
    
    @Size(min = 8, message = "密码长度需≥8位")
    private String password;
}

@PostMapping("/register")
public String register(@Valid @RequestBody User user) {
   
    
    // 校验逻辑由框架自动处理
    return "success";
}

核心优势

  • 声明式校验:通过注解自动完成参数验证
  • 代码简洁:减少冗余的if-else判断
  • 统一规范:标准化校验规则,降低维护成本

二、@Valid 注解

简介

  • Java标准注解(javax.validation)
  • 用于触发 Bean Validation 校验机制
  • 可校验方法参数成员属性

SpringBoot配置

<!-- pom.xml 必须依赖 -->
<dependency
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值