关于validation,我还有话要说

为了方便大家理解,以下内容都将会以问答的形式展开。

问题1:JSR303JSR349JSR380,这是什么鬼?

答:首先解释下JSR,JSR是提交给JCP组织的Java规范提案,在提案通过后将成为JAVA平台的标准规范。 其中JSR303,JSR 349,JSR380是关于Bean Validation的提案。

JSR 303,也就是Bean Validation 1.0 ,是第一款关于object validation的一个标准。
JSR 349,也就是Bean Validation 1.1,在Bean Validation 1.0的基础上增加了许多新的特性,比如方法级别的校验,Bean Validation组件的依赖注入,分组校验,el表达式的支持。
JSR380,即Bean Validation 2.0,相比Bean Validation 1.1,2.0提供了更加灵活的容器级别级联的校验,也开始支持自定义容器级别的校验,对Java8的Optional也提供了支持,同时有了更丰富的注解约束,比如 @Email, @NotEmpty, @NotBlank, @Positive等等。

问题2:经常听说Hibernate Validator,这个又是什么?

答:上面提到过JSR就是一个标准,一个规范,相当于JAVA中的接口。而Hibernate Validator就是Bean Validation这个规范的一个标准实现,相当于接口的实现类。(以下的Bean Validation指的都是Bean Validation 2.0)

问题3:Spring ValidationBean ValidationHibernate Validator三者之间又有什么样的关系?

答:Spring Validation使用Bean Validation提供的API,提供了校验的抽象,而真正进行校验的是Bean Validation的标准实现Hibernate Validator。
调用关系如下所示:
Spring Validation —> Bean Validation —> Hibernate Validator

问题4:什么时候使用Spring Validation?什么时候使用Hibernate Validator

答:spring项目,建议使用Spring Validation,这样更好地集成spring,实现针对抽象编程。
非spring项目,建议使用Javax Bean Validation api。
如果只是简单的测试应用或者测试项目,那完全可以直接使用Hibernate Validator。

问题5:怎么使用Spring Validation

参考:使用Spring validation 完成数据校验操作

问题6:@Valid、@Validated有什么区别?

答:@Valid是javax Validator(JSR)提供的一个注解,用来校验对象视图,但是不能在该注解里面指定校验组;@Validated是spring在此基础上抽象出的一个注解,扩展了@Valid的功能,可以设置对应校验组。

问题6:Spring method Validation方法级别校验的实现?

参考:spring method validation的实现

问题7:Spring method Validation方法级别校验的不足?

参考:spring method validation的不足

问题8:Spring method Validation方法的优化

参考:spring method validation的优化

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值