jsr303 spring

Spring提供了一种使用JSR 303 bean验证来验证方法参数的简便方法。 在这篇文章中,我们将看到如何使用此功能。

建立

首先,我们需要通过创建MethodValidationPostProcessor bean添加对方法参数验证的支持:

 @Configuration  public class MyConfiguration { @Bean public MethodValidationPostProcessor methodValidationPostProcessor() { return new MethodValidationPostProcessor(); }  } 

验证方法参数

注册MethodValidationPostProcessor之后,我们可以通过添加@Validated批注来启用每个bean的方法参数验证。 现在,我们可以将Java Bean验证批注添加到方法参数中以执行验证。

 @Service  @Validated  public class UserService { public User getUser( @NotBlank String uuid) { ... }  } 

在这里,我们添加了@NotBlank批注,以确保传递的uuid参数不为null或为空字符串。 每当传递无效的uuid时,都会引发ContraintViolationException。

除了简单的参数验证之外,我们还可以验证带有JSR 303注释的对象。

例如:

 public class User { @NotBlank private String name; // getter + setter  } 
 @Service  @Validated  public class UserService { public void createUser( @Valid User user) { ... }  } 

通过添加@Valid(不是@Validated),我们将用户参数标记为验证。 然后将根据User类中定义的验证约束来验证传递的用户对象。 在此,名称字段不应为null或包含空字符串。

这是如何运作的?

我们注册的MethodValidationPostProcessor Bean是一个BeanPostProcessor,它检查每个Bean是否被@Validated注释。 如果是这样,它将添加一个AOP拦截器( MethodValidationInterceptor )来拦截方法调用并执行验证。 仅当验证成功时才调用实际的bean方法。

因为此功能依赖于AOP拦截器,所以它仅适用于spring bean。

与往常一样,您可以在GitHub上找到所示示例的源。

翻译自: https://www.javacodegeeks.com/2020/01/method-parameter-validation-with-spring-and-jsr-303.html

jsr303 spring

jsr303 spring_使用Spring和JSR 303进行方法参数验证相关推荐

  1. jsr 303_使用Spring和JSR 303进行方法参数验证

    jsr 303 Spring提供了一种使用JSR 303 bean验证来验证方法参数的简便方法. 在这篇文章中,我们将看到如何使用此功能. 设定 首先,我们需要通过创建MethodValidation ...

  2. 使用Spring和JSR 303进行方法参数验证

    Spring提供了一种使用JSR 303 bean验证来验证方法参数的简便方法. 在这篇文章中,我们将看到如何使用此功能. 设定 首先,我们需要通过创建MethodValidationPostProc ...

  3. Spring MVC-07循序渐进之验证器 下 (JSR 303验证)

    概述 JSR 303 Validator Demo 测试 总结 源码 概述 JSR303"Bean Validation" 和 JSR349 "Bean Validati ...

  4. 让Spring 3中jsp的数据对象使用懒加载(FetchType.LAZY)与Controller的JSR 303并存

    本文出处:http://blog.csdn.net/chaijunkun/article/details/9083171,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在 ...

  5. jsr303自定义验证_JSR 310新日期/时间API的自定义JSR 303 Bean验证约束

    jsr303自定义验证 借助JSR 310,Java 8终于为我们带来了不错的日期和时间API. 对于仍在使用Java 7的那些人(就像我目前在我的当前项目中一样),有很好的反向移植,请访问www.t ...

  6. Spring boot的Bean使用JSR 303校验

    @Validated 验证注解 添加在验证的Bean上 @Validated public class Person { 就可以直接在属性上 使用JSR 303提供的,默认约束规则 //lastNam ...

  7. JSR 303 - Bean Validation 简介及使用方法

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.JSR-303简介 JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Va ...

  8. JSR 303从I18N属性文件加载消息

    总览 本文将说明如何适应JSR 303验证API来从I18n属性文件加载消息,并通过保留国际化的所有好处和对多种语言的支持来实现这一点. 为此,我们将实现一个基于Spring API的自定义Messa ...

  9. JSR 303 – Bean Validation 介绍及最佳实践

    关于 Bean Validation 在任何时候,当你要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情.应用程序必须通过某种手段来确保输入进来的数据从语义上来讲是正确的.在通常的情况下 ...

最新文章

  1. 如何利用计算机计算天数,如何应用Win10系统电脑中的计算器计算两个日期之间的天数?...
  2. 服务差,信号不好真的是联通用户下滑的原因吗?
  3. django 上传文件夹_django文件上传
  4. BeautfuiSoup4解析器
  5. C语言希尔排序(解析)
  6. android广播面试题,Android相关面试题
  7. Vue.js使用-http请求
  8. python合并excel工作簿_Python合并多个Excel工作簿
  9. webpack 异步加载配置文件_详解webpack异步加载业务模块
  10. Docker(4)-容器互联与端口映射
  11. Python3.x中Django-xadmin的添加
  12. 我的学习之路_第十四章_反射
  13. html5 ios cookie,iOS设置cookie到web遇到的坑
  14. shell脚本一键安装nginx[最终版]
  15. 5.并发工具和执行器(Concurrency Utilities and Executors)5.1 并发工具介绍
  16. 管理感悟:方案能力与解决问题能力
  17. xftp6成功安装教程(踩坑系列)
  18. 抖音视频什么时候投放dou+最好,dou+投放实战总结:国仁网络资讯
  19. 如何更改Dropbox的同步文件夹?
  20. 【洛谷】3957 跳房子

热门文章

  1. [树套树] 网络管理
  2. P7078-[CSP-S2020]贪吃蛇【贪心,队列】
  3. P4201-[NOI2008]设计路线【结论,树形dp】
  4. YbtOJ#20067-[NOIP2020模拟赛B组Day5]糖果分配【dp】
  5. P4145-上帝造题的七分钟2/花神游历各国【并查集,树状数组】
  6. P3975-[TJOI2015]弦论【SAM】
  7. P1314,jzoj3028-聪明的质监员【二分答案,前缀和】
  8. P3811-[模板]乘法逆元【线性求逆元】
  9. ssl1643-最小乘车费用【dp练习】
  10. 2021牛客暑期多校训练营3 C-Minimum grid(二分图)