想要使用validated需要引入Jar包,有两个方式,选择一种即可:

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

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.1.5.Final</version>
</dependency>

必须要引入,否则@validated不会生效

  1. 普通模式(默认是这个模式):会校验完所有的属性,然后返回所有的验证失败信息。

  2. 快速失败模式:只要有一个验证失败,则返回。

通常在实际开发中,我们需要配置快速失败模式,快速失败模式的配置方式:

package com.morris.validator.config;

import org.hibernate.validator.HibernateValidator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;

import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;

@Configuration
public class ValidatorConfig {

@Bean
    public Validator validator() {
        ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class)
                .configure()
                // 快速失败模式
                .failFast(true)
                .buildValidatorFactory();
        return validatorFactory.getValidator();
    }
}

@Bean
public Validator validator() {
    ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class)
            .configure()
            // 快速失败模式
            //.failFast(true)
            .addProperty( "hibernate.validator.fail_fast", "true" )
            .buildValidatorFactory();
    return validatorFactory.getValidator();
}

常用注解说明

@AssertFalse:
 
所注解的元素必须是Boolean类型,并且值为false
 
@AssertTrue:
 
所注解的元素必须是Boolean类型,并且值为true
 
@DecimalMax:
 
所注解的元素必须是数字,并且值要小于或等于给定的BigDecimalString值
 
@DecimalMin:
 
所注解的元素必须是数字,并且值要小于或等于给定的BigDecimalString值
 
@Digits:
 
所注解的元素必须是数字,并且它的值必须有指定的位数
 
@Email:
 
所注解的元素要匹配指定的正则表达式
 
@Max:
 
所注解的元素必须是数字,并且值要小于或等于给定的值。注意如果@Max所注解的元素是null,则@Max注解
会返回true,所以应该把@Max注解和@NotNull注解结合使用
 
@Min:
 
所注解的元素必须是数字,并且值要大于或等于给定的值。注意如果@Min所注解的元素是null,则@Min注解
会返回true,即也会通过校验,所以应该把@Min注解和@NotNull注解结合使用。
 
@NotBlank:
 
所注解的元素不能为null且不能为空白,用于校验CharSequence(含String、StringBuilder和StringBuffer)
 
@NotEmpty:
 
所注解的元素不能为null且长度大于0,可以是空白,用于校验CharSequence、数组、Collection和Map
 
@NotNull:
 
所注解的元素不能为null
 
@Null:
 
所注解的元素必须为null
 
@Pattern:
 
所注解的元素必须匹配指定的正则表达式。注意如果@Pattern所注解的元素是null,则@Pattern注解会返回
true,即也会通过校验,所以应该把@Pattern注解和@NotNull注解结合使用
 
@Size:
 
所注解的元素必须符合指定的大小,该注解可用于数组,CharSequence(含String、StringBuilder和
StringBuffer),Collection和Map。注意如果@Size所注解的元素是null,则@Size注解会返回true,即也
会通过校验,所以应该把@Size注解和@NotNull注解结合使用

eg:

@Data
public class Address {@NotBlank(message = "province不能为空")private String province;private String city;
}
import com.example.demovalidator.Vo.ResultVo;
import com.example.demovalidator.enums.ErrorCode;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;import java.util.Map;
import java.util.stream.Collectors;@ControllerAdvice
@ResponseBody
public class CtrIAdvice {@PostMapping("/test")public ResultVo testValited(@Validated @RequestBody Address address){return ResultVo.fail("失败了");}
}

后端validated校验相关推荐

  1. SpringBoot后端数据校验实战

    本文从本人博客搬运,原文格式更加美观,可以移步原文阅读:SpringBoot后端数据校验实战 一般我们会在Controller的接口中对前端传递的参数做数据校验,这是一个后端开发人员的基本素养 在Sp ...

  2. 【工具】JSR-303后端参数校验框架的使用方法及说明

    [工具]JSR-303后端参数校验框架的使用方法及说明 文章目录 [工具]JSR-303后端参数校验框架的使用方法及说明 1. 统一校验需求 2. 使用说明 2.1 引入依赖 2.2 规则说明 2.3 ...

  3. 实现Java后端数据校验

    每次我们在搭建一个开源项目的首要任务包括:项目的统一异常处理.统一结果封装以及做项目的数据校验,在前后端分离的情况下,不仅前端需要做数据校验,同样后端也要实现,前端主要使用一些类似与jQuery Va ...

  4. SpringBoot - 后端数据校验的实现

    SpringBoot - 后端数据校验的实现 通常来说,为了提高系统运行效率,都会在前端进行数据校验,但后端的数据校验仍然必不可少,因为用户还是可能在获取数据接口后手动传入非法数据,所以后端还是需要做 ...

  5. 后端数据校验之JSR303

    后端数据校验之JSR303 JSR303的使用 分组校验 自定义校验规则 一般在项目开发中,对数据准确性的校验必不可少,除了前端对数据进行校验,后端也要对数据进行校验. JSR303的使用 JSR30 ...

  6. SpringBoot中后端数据校验

    文章目录 1.为什么后端要进行数据校验? 2.怎么使用数据校验?(要添加对应依赖) 实现对手机号码的数据校验: 入参对象包含集合时,怎么对集合中的每个属性进行校验 1.为什么后端要进行数据校验? 如果 ...

  7. java 后端校验_如何实现Java后端数据校验?看这篇就足够!

    前言 每次我们在搭建一个开源项目的首要任务包括:项目的统一异常处理.统一结果封装以及做项目的数据校验,在前后端分离的情况下,不仅前端需要做数据校验,同样后端也要实现,前端主要使用一些类似与jQuery ...

  8. 参数校验放在controller还是service_@Validated校验的实践

    spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理. 一.简单使用 1.Controller上开启验证 2.DTO上申明被验证的字段 a. ...

  9. springboot后端数据校验以及异常处理

    文章目录 常用校验工具包 1.package javax.validation.constraints 包 2.package org.hibernate.validator.constraints; ...

最新文章

  1. c++判断双击间隔_录井工常见故障判断处理
  2. android 图片加载库 Glide 的使用介绍
  3. 精心收集汇总的Python学习资源(书籍+工具+视频),强烈建议收藏!
  4. 【Qt】数据库实战之QSqlRelationalTableModel
  5. 浙大计算机学院朱建科,浙江大学计算机科学与技术学院导师介绍:朱建科
  6. 1114. 按序打印
  7. JUnit4单元测试、JUnit4使用详解、assertThat用法
  8. SQLite cursor.moveToNext()
  9. C++执行shell命令
  10. Cocos2d-x CocosBuilder使用教程(一)HelloCocosBuilder
  11. 下载 嵌入式qt实战教程pdf_嵌入式QT基础视频教程免费分享!
  12. armv7l安卓刷linux,技术讲解-安卓APK快速生成后门(实现手机入侵)
  13. 【Android UI】ListView系列一(基础篇)
  14. 微信小程序 家校通 中小学家校联系电子作业系统
  15. 三坐标测圆的直径怎么测_大半径短圆弧用三坐标测不准?知道为什么吗?
  16. SIMetrix导入MOS管SPICE参数进行仿真的快速方法
  17. 迅雷离线配合Internet Download Manager下载ED2K链接
  18. SQL字段名显示蓝色的原因及其解决办法
  19. fpga时序逻辑(三段式状态机模板、rom实现、边沿检测)
  20. 关于python无法显示中文的问题:SyntaxError: Non-ASCII character '\xe4' in file test.py on line 3, but no encoding

热门文章

  1. 为赋新词强说愁之二(我和那时的他)
  2. 微信小程序之统一下单
  3. visual2019没有勾选的在如何加入_学习下微信如何快速建群的要求与技巧
  4. jquery实现ajax异步请求
  5. 2021电赛A题:信号失真度测量装置
  6. java位反_JAVA位运算之按位取反
  7. [置顶]ABP入门系列目录——学习Abp框架之实操演练
  8. 数据结构和算法-2023.07.02
  9. OpenGL ES Emulator比较
  10. mysql数据库条件语句怎么写_Mysql数据库的条件查询语句