栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JSR-使用Spring Boot对Spring @RestController进行349 bean验证

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JSR-使用Spring Boot对Spring @RestController进行349 bean验证

经过两天以上的成功命中和审判,我问了这个问题。由于对Spring验证和JSR验证,Spring如何调用JSR验证器,JSR标准中的更改以及所支持的验证类型感到困惑,因此出现了许多令人困惑的答案。

最后,这篇文章对我们很有帮助。

我分两步解决了问题,

1.在我的豆子中添加了以下豆子

Configuration
-没有这些豆子,将无法正常工作。

@Beanpublic MethodValidationPostProcessor methodValidationPostProcessor() {    MethodValidationPostProcessor mvProcessor = new MethodValidationPostProcessor();    mvProcessor.setValidator(validator());    return mvProcessor;}@Beanpublic LocalValidatorFactoryBean validator() {    LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();    validator.setProviderClass(Hibernatevalidator.class);    validator.afterPropertiesSet();    return validator;}

2.将Spring的@Validated注释放置在我的控制器上,如下所示,

@RestController@RequestMapping("/...")@Validatedpublic class MyRestController {}

验证为-

org.springframework.validation.annotation.Validated

此设置不会影响在同一控制器中

@Valid
进行
@RequestBody
验证的注释,并且注释仍将继续工作。

因此,现在,我可以针对

MyRestController
类中的方法触发以下验证,

@RequestMapping(method = RequestMethod.GET, value = "/testValidated" , consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)public ResponseBean<String> testValidated(        @Email(message="email RequestParam is not a valid email address")         @NotEmpty(message="email RequestParam is empty")         @RequestParam("email") String email) {    ResponseBean<String> response = new ResponseBean<>();    ....    return response; }

我必须在异常处理程序中添加另一个处理程序以处理异常-

ConstraintViolationException
尽管由于在
@Validated
抛出时
@Valid
会抛出此异常
MethodArgumentNotValidException



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/430521.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号