jsr 303_使用Spring和JSR 303进行方法参数验证
jsr 303
Spring提供了一种使用JSR 303 bean验证来验证方法参数的简便方法。 在这篇文章中,我们将看到如何使用此功能。
设定
首先,我们需要通过创建MethodValidationPostProcessor bean添加对方法参数验证的支持:
@Configurationpublic class MyConfiguration {@Beanpublic MethodValidationPostProcessor methodValidationPostProcessor() {return new MethodValidationPostProcessor();}}
验证方法参数
注册MethodValidationPostProcessor之后,我们可以通过添加@Validated批注来启用每个bean的方法参数验证。 现在,我们可以将Java Bean验证批注添加到方法参数中以执行验证。
@Service@Validatedpublic class UserService { public User getUser( @NotBlank String uuid) {...}}
在这里,我们添加了@NotBlank批注,以确保传递的uuid参数不为null或为空字符串。 每当传递无效的uuid时,都会引发ContraintViolationException。
除了简单的参数验证之外,我们还可以验证带有JSR 303注释的对象。
例如:
public class User { @NotBlankprivate String name; // getter + setter}
@Service@Validatedpublic 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
jsr 303
jsr 303_使用Spring和JSR 303进行方法参数验证相关推荐
- jsr303 spring_使用Spring和JSR 303进行方法参数验证
jsr303 spring Spring提供了一种使用JSR 303 bean验证来验证方法参数的简便方法. 在这篇文章中,我们将看到如何使用此功能. 建立 首先,我们需要通过创建MethodVali ...
- 使用Spring和JSR 303进行方法参数验证
Spring提供了一种使用JSR 303 bean验证来验证方法参数的简便方法. 在这篇文章中,我们将看到如何使用此功能. 设定 首先,我们需要通过创建MethodValidationPostProc ...
- Spring Boot如何优雅的校验参数
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「乱敲代码」 做web开发有一点很烦人就 ...
- Spring Boot 定义接口的方法是否可以声明为 private?
我们在 Controller 中定义接口的时候,一般都是像下面这样: @GetMapping("/01") public String hello(Map<String,Ob ...
- java mvc 绑定_关于Java:Spring MVC:将请求属性绑定到控制器方法参数
在Spring MVC中,很容易将请求参数绑定到处理请求的方法参数. 我只是使用@RequestParameter("name"). 但是我可以对request属性做同样的事情吗? ...
- Spring - 同一个类中的方法互相调用,注解失效问题的分析和解决(转)
Spring - 同一个类中的方法互相调用,注解失效问题的分析和解决(转) 参考文章: (1)Spring - 同一个类中的方法互相调用,注解失效问题的分析和解决(转) (2)https://www. ...
- Spring boot异常统一处理方法:@ControllerAdvice注解的使用、全局异常捕获、自定义异常捕获
Spring boot异常统一处理方法:@ControllerAdvice注解的使用.全局异常捕获.自定义异常捕获 参考文章: (1)Spring boot异常统一处理方法:@ControllerAd ...
- Spring Validation验证框架参数验证 @Validated 和 @Valid 的区别
参数验证 @Validated 和 @Valid 的区别 Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303 规范,是标准 JSR- ...
- Spring MVC集成Tiles使用方法
Spring MVC集成Tiles使用方法 转载于:https://www.cnblogs.com/zhujiabin/p/5012129.html
最新文章
- leetcode算法题--扑克牌中的顺子
- 关于eclipse的实用技巧
- Hive的基本操作-分组和多表连接
- mysql sqlite 分页查询_sqlite分页查询
- java spring server_java server之spring中的IOC如何用java实现?
- SQLserver nText和varchar 不兼容
- angular组件图标无法显示的问题
- PL/SQL相关的数据字典
- 电脑磁盘分区助手:DiskGenius磁盘管理与数据恢复软件
- pt-archiver详解
- 逻辑斯谛回归logistic regression-最大熵
- DuerOS 走进初夏的成都
- 【ZOJ2750】Idiomatic Phrases Game(最短路)
- 输出字符矩形--实心、空心
- 微信小程序多表查询踩坑记录
- ASP中Err.number返回的错误代码解释大全
- 为什么登出网页浏览器重定向到/login?logout
- R语言时间序列分析之ARIMA模型预测
- [iPhone-APP]手机归属地查询软件
- Hadoop实现数据清洗ETL
热门文章
- 程序设计语言常见面试题
- Asp.Net 上传大文件专题(3)--从请求流中获取数据并保存为文件[下]
- jQuery方法position()与offset()区别
- Eclipse小技巧
- js提取url参数的几种方法。(搜集)
- datanode 不能连接master
- python时间差中 seconds 和 total_seconds 区别
- linux shell 显示文件最后几行
- mysql 时间差函数 timestampdiff datediff 简介
- linux shell脚本中调用另一个shell脚本