首页 > 其他分享 >SpringBoot项目使用 validation进行数据校验

SpringBoot项目使用 validation进行数据校验

时间:2023-05-01 13:33:06浏览次数:39  
标签:Validated SpringBoot Spring 校验 Valid 注解 validation

validation进行数据校验

@Validated 注解和 @Valid 注解都是 Spring Framework 中用于数据校验的注解,但它们有以下几点区别:

  1. 所在包路径不同:@Valid 注解位于 javax.validation.constraints 包下,而 @Validated 注解位于 org.springframework.validation.annotation 包下。

  2. 支持的目标类型不同:@Valid 注解支持作用在方法参数、属性、方法返回值等多种目标类型上,而 @Validated 注解仅支持作用在方法参数和类上。

  3. 校验能力不同:@Valid 注解使用 Bean Validation 规范进行数据校验,支持约束注解如 @NotNull@Email@Pattern 等;@Validated 注解则使用 Spring Validation 框架进行数据校验,支持约束注解如 @NotBlank@Length@Min 等。虽然两者都可以用于数据校验,但这两种框架的实现方式略有不同。

  4. 使用场景不同:@Valid 注解通常适用于在 Java EE 容器中使用,例如在 JPA 实体或 EJB 中进行数据校验;而 @Validated 注解则主要适用于 Spring Web 应用程序中,在 Controller 或 Service 层中对请求参数进行数据校验。

需要注意的是,在使用 @Valid 注解进行数据校验时,还需要在应用程序中添加 Bean Validation API 和实现,以保证数据校验能够正常工作。而在使用 @Validated 注解进行数据校验时,Spring 框架会自动将约束注解转换为 Spring 内部的校验器,并使用其中的校验逻辑进行数据校验。

maven导入

spring-boot-starter-validation 依赖项是 Spring Boot 提供的用于支持 Bean Validation API 的快速启动器。它包含了 Bean Validation API 和 Hibernate Validator 实现等必要的依赖项,并且已经在 Spring Boot 中预先配置好了相关的参数和属性。

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

具体使用代码:

UserRegisterDto 类,用于接收前端传入的内容

@Data
public class UserRegisterDto {

    @Email(regexp = "\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*", message = "邮箱格式错误")
    private String email;

    @Length(min = 2, max = 10, message = "昵称建议在2-10之间的长度")
    private String nickname;

    @Length(min =6, message = "密码最少要6位数")
    private String password;

    @Length(min = 5, max = 5, message = "请输入正确的验证码")
    private String code;
}

下面的方法里的形参有带入@Valid注解,该注解可让spring框架知道要进行校验。

@PostMapping("register")
public R register(@RequestBody @Valid UserRegisterDto registerDto) {

	CacheObject<String> verifyCodeCache = REGISTER_EMAIL_CACHE.get(registerDto.getEmail());

	if (verifyCodeCache == null ||
		verifyCodeCache.isExpire() ||
		!registerDto.getCode().equals(verifyCodeCache.getObj())) {
		return R.error().msg("请获取验证码,该验证码已失效!");
	}

	return userService.registerUser(registerDto);
}

标签:Validated,SpringBoot,Spring,校验,Valid,注解,validation
From: https://www.cnblogs.com/liuscraft/p/17366441.html

相关文章

  • Springboot @Test 给Controller接口 写 单元测试
    Springboot@Test给Controller接口写单元测试https://blog.csdn.net/qq_35387940/article/details/129140984?spm=1001.2101.3001.6650.8&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-8-129140984-blog-103569814.235%5Ev32......
  • java基于springboot的毕业生信息招聘平台、高校学生招聘管理系统、招聘管理系统,附源码
    1、项目介绍毕业生信息招聘平台的功能如下:管理管理员;首页、个人中心、企业管理、空中宣讲会管理、招聘岗位管理、毕业生管理、个人简历管理、求职信息管理、信息咨询管理、岗位应聘管理、线上面试管理、面试回复管理、试卷管理、试题管理、管理员管理、论坛管理、系统管理、考试......
  • java基于springboot的学生毕业离校系统管理系统、高校学生离校管理系统,附源码+数据库+
    1、项目介绍学生毕业离校系统的开发过程中,采用B/S架构,主要使用Java技术进行开发,结合最新流行的springboot框架。中间件服务器是Tomcat服务器,使用Mysql数据库。该学生毕业离校系统包括管理员、学生和教师。其主要功能包括管理员:首页、个人中心、学生管理、教师管理、离校信息管......
  • springboot2.7.10集成swagger3.0 (springboot版本和swagger是有版本搭配的吗)
    springboot2.7.10集成swagger3.0https://blog.csdn.net/TuringZGJ/article/details/129832851  springboot版本和swagger是有版本搭配的吗 SpringbootSwagger各版本整理https://blog.csdn.net/m0_67401746/article/details/126506471 ......
  • springboot mybatis-plus 3.5.1代码生成器配置
    springbootmybatis-plus3.5.1代码生成器配置https://blog.csdn.net/Lean_on_Me/article/details/128066822  ......
  • springboot的测试类@SpringBootTest 一般是写在哪里,有什么用
    springboot一般可以有多少个@SpringBootTest测试类 springboot的测试类一般是写在哪里的 ......
  • springboot 自动装配的原理
     自动装配原理问题就是为什么我们直接导入依赖就可以使用了,甚至不用配置web.xml,tomcat等,springboot内部是如何实现的?主启动类上的注解@SpringBootApplication里有三个重要注解:@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan1.@SpringBootConfiguration......
  • 一天吃透SpringBoot面试八股文
    Springboot的优点内置servlet容器,不需要在服务器部署tomcat。只需要将项目打成jar包,使用java-jarxxx.jar一键式启动项目SpringBoot提供了starter,把常用库聚合在一起,简化复杂的环境配置,快速搭建spring应用环境可以快速创建独立运行的spring项目,集成主流框架准生产环境的......
  • SpringBoot读取.yml配置文件最常见的两种方式-源码及其在nacos的应用
    三、第二种方式(推荐)这种方式是小编比较推荐的,虽然看似比​​@Value​​麻烦不少,但是更加的规范,在配合nacos的时候也可以动态的修改,会立即生效,一会小编带大家试一下哈!!为什么推荐这种方式呢,是因为spring他们都是使用这种方式进行配置的,所以跟着官方走不会有错的!!1.修改yml文件我们......
  • sap ui5 结束日期校验
    <DatePickerplaceholder=""value="{path:'OtherModel>endDate'}"......