@Validated和@Valid的用法、区别

在Spring框架中,有两个非常常用的注解:@Validated和@Valid。这两个注解都可以用来验证Bean对象的属性。不过它们之间有一些不同,这篇文章将详细介绍它们的用法、区别等。

1. @Validated注解

@Validated注解是Spring框架提供的验证注解,它在Bean对象中可以用来验证属性值是否符合规范。在Spring MVC中,我们通常会在Controller层使用它来验证请求参数是否合法。@Validated注解可以用于方法级别和类型级别(类级别)。具体的用法如下:

(1)方法级别

在方法上使用@Validated注解,用来验证方法参数:

@RestController
public class UserController {

    @PostMapping("/user")
    public void createUser(@Validated @RequestBody User user) {
        // ...
    }
}

(2)类型级别

在类上使用@Validated,用来验证在该类中所有的属性:

@Validated
@Data
public class User {
    @NotNull(message = "用户名不能为空")
    private String name;

    @NotNull(message = "密码不能为空")
    private String password;
}

2. @Valid注解

@Valid注解是Java Bean Validation(JSR303)提供的验证注解,用来验证Bean的属性值是否符合规范。具体的用法如下:

@RestController
public class UserController {

    @PostMapping("/user")
    public void createUser(@Valid @RequestBody User user) {
        // ...
    }
}

这里的@Valid注解只能用在方法参数上,并且会校验该参数的所有成员变量。

@NotNull :被注解的元素必须不为null

@NotBlank注解 :验证注解的元素值不为空(不为null、去除首位空格后长度为0) ,并且类型为String。

@NotEmpty注解 :验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0) ,并且类型为String。

@AssertTrue注解 :被注解的元素必须为true,并且类型为boolean。

@AssertFalse注解 :被注解的元素必须为false,并且类型为boolean。

@Min注解 :被注解的元素其值必须大于等于最小值,并且类型为int,long,float,double。

@Max注解:被注解的元素其值必须小于等于最小值,并且类型为int,long,float,double。

@DecimalMin注解 :验证注解的元素值大于等于@DecimalMin指定的value值,并且类型为BigDecimal。

@DecimalMax注解 :验证注解的元素值小于等于@DecimalMax指定的value值 ,并且类型为BigDecimal。

@Range注解 :验证注解的元素值在最小值和最大值之间,并且类型为BigDecimal,BigInteger,CharSequence,byte,short,int,long。

@Past注解 :被注解的元素必须为过去的一个时间,并且类型为java.util.Date。

@Future注解 :被注解的元素必须为未来的一个时间,并且类型为java.util.Date。

@Size注解 :被注解的元素的长度必须在指定范围内,并且类型为String,Array,List,Map。

@Length注解 :验证注解的元素值长度在min和max区间内 ,并且类型为String。

@Digits注解 :验证注解的元素值的整数位数和小数位数上限 ,并且类型为float,double,BigDecimal。

@Pattern注解 :被注解的元素必须符合指定的正则表达式,并且类型为String。

@Email注解: 验证注解的元素值是Email,也可以通过regexp和flag指定自定义的email格式,类型为String。

 

3. 区别

区别主要有以下几个方面:

(1)@Validated注解是Spring框架提供的注解,而@Valid注解是Java Bean Validation(JSR303)提供的注解。

(2)@Validated注解可以用于方法级别和类型级别,@Valid注解只用于方法参数。

(3)@Validated注解是Spring框架的一部分,可以跟Spring框架结合使用实现一些特定功能,如:@PathVariable、@RequestParam、@RequestBody验证等。

(4)@Validated注解只能对Spring容器中的Bean进行验证,而@Valid注解可以对任意的对象进行验证。

总结:@Validated和@Valid注解虽然都是用于验证Bean对象的属性值是否符合规范,但是@Validated更具可定制化,可以更好的与Spring框架进行结合使用。而@Valid注解则是Java Bean Validation(JSR303)标准的一部分,在验证非Spring容器管理的Bean对象时更为便利。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值