广告
返回顶部
首页 > 资讯 > 精选 >Spring如何使用Validation验证框架
  • 229
分享到

Spring如何使用Validation验证框架

2023-06-20 19:06:30 229人浏览 独家记忆
摘要

这篇文章主要介绍了spring如何使用Validation验证框架,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、介绍Spring Validation 验证框架对参数的验

这篇文章主要介绍了spring如何使用Validation验证框架,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一、介绍

Spring Validation 验证框架对参数的验证机制提供了@Validated (Spring's jsR-303 规范,是标准 JSR-303 的一个变种),javax 提供了@Valid(标准 JSR-303 规范),配合 BindingResult 可以直接提供参数验证结果。其中对于字段的特定验证注解,比如 @NotNull。
两者在检验 Controller 的入参是否符合规范时,使用@Validated 或者 @Valid 在基本验证功能上没有太多区别。但是在分组、注解地方、嵌套验证等功能上两个有所不同:

@Validated
分组:提供分组功能,可在入参验证时,根据不同的分组采用不同的验证机制。
可注解位置:可以用在类型、方法和方法参数上。但是不能用在成员属性上
嵌套验证:用在方法入参上无法单独提供嵌套验证功能;不能用在成员属性上;也无法提供框架进行嵌套验证;能配合嵌套验证注解 @Valid 进行嵌套验证。

@Valid
分组:无分组功能
可注解位置:可以用在方法、构造函数、方法参数和成员属性上(两者是否能用于成员属性上直接影响能否提供嵌套验证的功能)
嵌套验证:用在方法入参上无法单独提供嵌套验证功能;能够用在成员属性上,提示验证框架进行嵌套验证;能配合嵌套验证注解@Valid进行嵌套验证。

二、使用

SpringBoot 2.3.0后需要添加依赖

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-validation</artifactId></dependency>

配置 validation 使出现校验失败即返回

@Configurationpublic class WEBConfig {    @Bean    public Validator validator() {        ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class)                .configure()                //failFast的意思只要出现校验失败的情况,就立即结束校验,不再进行后续的校验。                .failFast(true)                .buildValidatorFactory();         return validatorFactory.getValidator();    }     @Bean    public MethodValidationPostProcessor methodValidationPostProcessor() {        MethodValidationPostProcessor methodValidationPostProcessor = new MethodValidationPostProcessor();        methodValidationPostProcessor.setValidator(validator());        return methodValidationPostProcessor;    }}

编写全局异常捕获,捕获验证失败,统一返回

@Slf4j@ControllerAdvicepublic class ValidatedExceptionHandler {    @ResponseBody    @ExceptionHandler(BindException.class)    public String exceptionHandler2(BindException exception) {        BindingResult result = exception.getBindingResult();        if (result.hasErrors()) {            return result.getAllErrors().get(0).getDefaultMessage();        }        return "参数不可为空!";    }    @ResponseBody    @ExceptionHandler(MethodArgumentNotValidException.class)    public String exceptionHandler2(MethodArgumentNotValidException exception) {        BindingResult result = exception.getBindingResult();        if (result.hasErrors()) {            return result.getAllErrors().get(0).getDefaultMessage();        }        return "参数不可为空!";    }}

定义Dto,在参数上添加注解校验

@Datapublic class ValidDto {    @NotEmpty(message = "name 不可为空!")    private String name;    @NotBlank(message = "userId 不可为空!")    private String userId;    @Min(value = 1, message = "年龄有误!")    @Max(value = 120, message = "年龄有误!")    private int age;    @NotBlank(message = "邮箱不可为空!")    @Email(message = "邮箱有误!")    private String email;    @NotBlank(message = "mobile不可为空!")    @Pattern(regexp = "^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\\d{8}$", message = "手机号码有误!")    private String mobile;    @NotNull(message = "validVo 不可为空!")    @Valid    private ValidVo validVo;    @NotEmpty(message = "list1 不可为空!")    @Size(min = 1, max = 2, message = "list1 数据过大")    @Valid    private List<ValidVo> list1;}
@Datapublic class ValidVo {    @NotBlank(message = "gender is null")    private String gender;    @NotBlank(message = "test is null")    private String test;}

Controller

@RestController@RequestMapping("/valid")@CrossOriginpublic class ValidController {    @GetMapping("/GetTest")    public String getTest(@Valid ValidDto dto, BindingResult result) {        if (result.hasErrors()) {            return result.getAllErrors().get(0).getDefaultMessage();        }        return "success";    }    @GetMapping("/GetTest2")    public String getTest2(@Validated ValidDto dto) {        return "success";    }    @GetMapping("/GetTest3")    public String getTest3(@Validated @RequestBody ValidDto dto) {        return "success";    }}

感谢你能够认真阅读完这篇文章,希望小编分享的“Spring如何使用Validation验证框架”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: Spring如何使用Validation验证框架

本文链接: https://www.lsjlt.com/news/299180.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Spring如何使用Validation验证框架
    这篇文章主要介绍了Spring如何使用Validation验证框架,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、介绍Spring Validation 验证框架对参数的验...
    99+
    2023-06-20
  • Spring 使用Validation 验证框架的问题详解
    一、介绍 Spring Validation 验证框架对参数的验证机制提供了@Validated (Spring's JSR-303 规范,是标准 JSR-303 的一个变种),ja...
    99+
    2022-11-12
  • 如何使用Spring注入Hibernate验证框架
    本篇内容介绍了“如何使用Spring注入Hibernate验证框架”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Spring注入Hibern...
    99+
    2023-06-21
  • 使用Spring注入Hibernate验证框架
    目录Spring注入Hibernate验证框架Spring配置文件Hibernate内置的验证约束注解如下表所示springmvc使用Hibernate的校验框架validation...
    99+
    2022-11-12
  • Spring Boot验证码框架CAPTCHA有什么用
    这篇文章主要介绍Spring Boot验证码框架CAPTCHA有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!CAPTCHA简介人机识别与验证码是后端开发中保护接口最常见的方式之一,而此类代码往往会与业务代码耦...
    99+
    2023-06-14
  • 如何在AmazeUI中使用JS表单验证框架
    这期内容当中小编将会给大家带来有关如何在AmazeUI中使用JS表单验证框架,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、需求做一个内嵌到UTribe(一款Android App)的学生会活动报名系统...
    99+
    2023-06-09
  • Spring security框架如何使用
    本篇内容介绍了“Spring security框架如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!简介Spring Secu...
    99+
    2023-07-05
  • Spring框架如何使用二维码?
    随着移动互联网的快速发展,二维码已经成为了一种非常流行的信息识别方式。在很多场景下,我们都可以看到二维码的身影,比如在超市、商场、地铁站等公共场所,我们可以通过扫描二维码获取更多的信息或者完成一些交易操作。在这篇文章中,我们将介绍如何在S...
    99+
    2023-10-21
    二维码 spring leetcode
  • Spring Retry重试框架如何使用
    这篇“Spring Retry重试框架如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Spring ...
    99+
    2023-07-04
  • 如何在Spring框架中使用NumPy?
    Spring框架是一个非常流行的Java开发框架,而NumPy则是一个Python科学计算库。虽然它们似乎没有直接的关系,但是在某些情况下,我们可能需要在Spring框架中使用NumPy。本文将介绍如何在Spring框架中使用NumPy,...
    99+
    2023-07-30
    spring numpy npm
  • golang中gin框架接入jwt如何使用token验证身份
    本篇内容介绍了“golang中gin框架接入jwt如何使用token验证身份”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!jwtjwt的原理...
    99+
    2023-06-22
  • hibernate-validator如何使用校验框架
    目录一、前言二、常用注解说明三、定义校验分组四、定义校验Bean五、validator基本使用六、借助BindingResult七、全局拦截校验器八、借助ValidatorUtils...
    99+
    2022-11-13
  • 如何使用Spring Batch批处理框架
    这篇文章主要讲解了“如何使用Spring Batch批处理框架”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Spring Batch批处理框架”吧!1 前言Spring Batch是...
    99+
    2023-06-16
  • golang中gin框架接入jwt使用token验证身份
    目录jwt 流程: 1.token 工具类 2. 使用该中间件 3. controller部分代码 jwt jwt的原理和session有点相像,其目的是为了解决rest api中...
    99+
    2022-11-12
  • 如何使用Maven搭建SpringMVC+Spring+MyBatis框架
    这篇文章主要介绍如何使用Maven搭建SpringMVC+Spring+MyBatis框架,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!SSM(Spring+SpringMVC+Mybatis),目前较为主流的企业级...
    99+
    2023-05-30
    springmvc spring mybatis
  • 如何使用Spring-Test对Spring框架进行单元测试
    目录Spring-Test对Spring框架进行单元测试加载依赖编写SpringTestBase基础类,加载所需xml文件编写单元测试类 示例Spring-Test测试数据1、新建一...
    99+
    2022-11-12
  • 如何使用Python在LeetCode上加载Spring框架?
    LeetCode是一家面向程序员的在线编程平台,通过该平台,程序员可以学习算法和数据结构,提高自己的编程能力。而Spring框架则是一款非常流行的Java开发框架,它提供了很多方便的功能,可以帮助程序员快速开发高质量的Java应用程序。本...
    99+
    2023-06-17
    leetcode load spring
  • 如何在Spring框架中使用Python的NumPy API?
    Spring框架是一款非常流行的Java开发框架,它提供了丰富的功能和组件,可以帮助开发者快速构建高质量的Java应用程序。而Python的NumPy API是一款非常强大的科学计算库,它提供了丰富的数学函数和数据结构,可以帮助开发者更加高...
    99+
    2023-09-26
    api numpy spring
  • 使用spring如何对cxf框架进行整合
    使用spring如何对cxf框架进行整合?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.创建动态web项目2.导入cxf和spring相关jar包(CXF核心...
    99+
    2023-05-31
    cxf spring
  • 教你如何正确的使用Spring Boot框架
    本篇文章为大家展示了教你如何正确的使用Spring Boot框架,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Spring Boot主要有如下核心功能:独立运行的Spring项目Spring Boo...
    99+
    2023-05-31
    springboot spring boo
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作