【参数校验框架】javax的validation使用

应用场景:假如我们新增用户信息,用户的用户名和密码不能为空,我不想写if/else进行判断,这个时候就可以用javax的validation来做。

javax的校验机制是基于标准JSR-303规范()。
hibernate是扩展了javax的接口

但是java只提供了接口,需要我们自己来写校验规则。
好在hibernate为我们提供了一些校验规则。我们可以直接拿来用。

Validator

参考下面这个博客:给我们介绍了如何使用。还有如何自定义注解来验证参数。
https://blog.csdn.net/dream_broken/article/details/53584169

@Valid

但是其实在Spring管理的项目,用不着这么麻烦,因为Spring有@Valid注解可以在classpath下有Hibernate Validator时自动触发校验.原理是通过切面( MethodValidationPostProcessor.)
来扫描所有的@Valid注解.并且支持校验 javax和hibernate 的注解. 还能把验证结果绑定在BindingResult类上.我们可以拿到校验结果去做自定义处理,或者直接抛出NPE.

如果你想更多地了解Spring是如何处理@Valid注解的话,可以看看这个stackOverFlow上的问题
https://stackoverflow.com/questions/3595160/what-does-the-valid-annotation-indicate-in-spring

关于@Valid的简单入门使用可以参考:
https://blog.csdn.net/FU250/article/details/80247930

@Validated

但是我还发现 Spring除了提供@Valid之外,还会提供@Validated注解.这2个注解大多数功能都是重复的但是还是有略微的区别.

这里先说下不同点:

  1. 分组
  2. 注解地方,@Valid可以注解在成员属性(字段)上,但是@Validated不行
  3. 由于第2点的不同,将导致@Validated不能做嵌套校验

对这2个标签的不同点参考:https://blog.csdn.net/qq_27680317/article/details/79970590

猜你喜欢

转载自blog.csdn.net/weixin_33994444/article/details/86987205