SpringBoot项目使用 validation进行数据校验()-spring
SpringBoot项目使用 validation进行数据校验()
validation进行数据校验
注解和 注解都是 Spring Framework 中用于数据校验的注解,但它们有以下几点区别:
@Validated
@Valid
- 所在包路径不同:@Valid 注解位于 javax.validation.constraints 包下,而 @Validated 注解位于 org.springframework.validation.annotation 包下。
- 支持的目标类型不同:@Valid 注解支持作用在方法参数、属性、方法返回值等多种目标类型上,而 @Validated 注解仅支持作用在方法参数和类上。
- 校验能力不同:@Valid 注解使用 Bean Validation 规范进行数据校验,支持约束注解如 @NotNull、@Email、@Pattern 等;@Validated 注解则使用 Spring Validation 框架进行数据校验,支持约束注解如 @NotBlank、@Length、@Min 等。虽然两者都可以用于数据校验,但这两种框架的实现方式略有不同。
- 使用场景不同:@Valid 注解通常适用于在 Java EE 容器中使用,例如在 JPA 实体或 EJB 中进行数据校验;而 @Validated 注解则主要适用于 Spring Web 应用程序中,在 Controller 或 Service 层中对请求参数进行数据校验。
需要注意的是,在使用 注解进行数据校验时,还需要在应用程序中添加 Bean Validation API 和实现,以保证数据校验能够正常工作。而在使用 注解进行数据校验时,Spring 框架会自动将约束注解转换为 Spring 内部的校验器,并使用其中的校验逻辑进行数据校验。
@Valid
@Validated
maven导入
spring-boot-starter-validation 依赖项是 Spring Boot 提供的用于支持 Bean Validation API 的快速启动器。它包含了 Bean Validation API 和 Hibernate Validator 实现等必要的依赖项,并且已经在 Spring Boot 中预先配置好了相关的参数和属性。
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);
}
validation进行数据校验
注解和 注解都是 Spring Framework 中用于数据校验的注解,但它们有以下几点区别:
@Validated
@Valid
- 所在包路径不同:@Valid 注解位于 javax.validation.constraints 包下,而 @Validated 注解位于 org.springframework.validation.annotation 包下。
- 支持的目标类型不同:@Valid 注解支持作用在方法参数、属性、方法返回值等多种目标类型上,而 @Validated 注解仅支持作用在方法参数和类上。
- 校验能力不同:@Valid 注解使用 Bean Validation 规范进行数据校验,支持约束注解如 @NotNull、@Email、@Pattern 等;@Validated 注解则使用 Spring Validation 框架进行数据校验,支持约束注解如 @NotBlank、@Length、@Min 等。虽然两者都可以用于数据校验,但这两种框架的实现方式略有不同。
- 使用场景不同:@Valid 注解通常适用于在 Java EE 容器中使用,例如在 JPA 实体或 EJB 中进行数据校验;而 @Validated 注解则主要适用于 Spring Web 应用程序中,在 Controller 或 Service 层中对请求参数进行数据校验。
需要注意的是,在使用 注解进行数据校验时,还需要在应用程序中添加 Bean Validation API 和实现,以保证数据校验能够正常工作。而在使用 注解进行数据校验时,Spring 框架会自动将约束注解转换为 Spring 内部的校验器,并使用其中的校验逻辑进行数据校验。
@Valid
@Validated
maven导入
spring-boot-starter-validation 依赖项是 Spring Boot 提供的用于支持 Bean Validation API 的快速启动器。它包含了 Bean Validation API 和 Hibernate Validator 实现等必要的依赖项,并且已经在 Spring Boot 中预先配置好了相关的参数和属性。
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);
}