springBoot 使用 @NotEmpty,@NotBlank,@NotNull 及@Valid注解校验请求参数

简介: springBoot 使用 @NotEmpty,@NotBlank,@NotNull 及@Valid注解校验请求参数

本文为博主原创,转载请注明出处:

  @NotEmpty,@NotBlank,@NotNull 这些注解所在的jar包路径在 javax.validation.constraints 的包下面,这个包下面也封装了其他的注解

 

 

这里列举一下常用的注解,并做简单介绍,其余还要在使用的时候慢慢挖掘

//被注释的元素必须为null
@Null  
//被注释的元素不能为null
@NotNull  
//被注释的元素必须为true
@AssertTrue  
//被注释的元素必须为false
@AssertFalse  
//被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Min(value)  
//被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Max(value)  
//被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMin(value)  
//被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMax(value)  
//被注释的元素的大小必须在指定的范围内。
@Size(max,min) 
//被注释的元素必须是一个数字,其值必须在可接受的范围内
@Digits(integer,fraction) 
//被注释的元素必须是一个过去的日期 
@Past  
//被注释的元素必须是一个将来的日期
@Future  
//被注释的元素必须符合指定的正则表达式。
@Pattern(value) 
//被注释的元素必须是电子邮件地址
@Email 
//被注释的字符串的大小必须在指定的范围内
@Length 
//被注释的字符串必须非空
@NotEmpty  
//被注释的元素必须在合适的范围内
@Range

  这些注解用于加在java的实体类属性字段上,在进行请求或请求的时候会根据字段的注解进行对应的校验,简化校验相关的代码。

当校验不同过时,会返回对应的message描述

在前端请求解析到 controller 的时候,可使用 @valid 注解,开启校验,以下为使用的示例:
   @PostMapping("/get/user/course")
    public UserCourseInfo getUserCourseInfo(@Valid @RequestBody CreateUserRequest request) {
        return userService.getUserCourseInfo(request);
    }

CreateUserRequest 实体类并添加校验注解

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
 * <h1>创建用户请求对象定义</h1>
 * Created by Qinyi.
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CreateUserRequest {
    /** 用户名 */
    @NotNull(message = "不可为空")
    @Length(min=20,max=30,message = "长度在20到30")
    private String username;
    /** 邮箱 */
    @Email
    @NotBlank
    private String email;
}


标签: spring boot

目录
相关文章
|
4月前
|
缓存 监控 Java
SpringBoot @Scheduled 注解详解
使用`@Scheduled`注解实现方法周期性执行,支持固定间隔、延迟或Cron表达式触发,基于Spring Task,适用于日志清理、数据同步等定时任务场景。需启用`@EnableScheduling`,注意线程阻塞与分布式重复问题,推荐结合`@Async`异步处理,提升任务调度效率。
780 128
|
4月前
|
XML 安全 Java
使用 Spring 的 @Aspect 和 @Pointcut 注解简化面向方面的编程 (AOP)
面向方面编程(AOP)通过分离横切关注点,如日志、安全和事务,提升代码模块化与可维护性。Spring 提供了对 AOP 的强大支持,核心注解 `@Aspect` 和 `@Pointcut` 使得定义切面与切入点变得简洁直观。`@Aspect` 标记切面类,集中处理通用逻辑;`@Pointcut` 则通过表达式定义通知的应用位置,提高代码可读性与复用性。二者结合,使开发者能清晰划分业务逻辑与辅助功能,简化维护并提升系统灵活性。Spring AOP 借助代理机制实现运行时织入,与 Spring 容器无缝集成,支持依赖注入与声明式配置,是构建清晰、高内聚应用的理想选择。
555 0
|
3月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
505 2
|
4月前
|
Java 测试技术 数据库
使用Spring的@Retryable注解进行自动重试
在现代软件开发中,容错性和弹性至关重要。Spring框架提供的`@Retryable`注解为处理瞬时故障提供了一种声明式、可配置的重试机制,使开发者能够以简洁的方式增强应用的自我恢复能力。本文深入解析了`@Retryable`的使用方法及其参数配置,并结合`@Recover`实现失败回退策略,帮助构建更健壮、可靠的应用程序。
600 1
使用Spring的@Retryable注解进行自动重试
|
4月前
|
XML Java 数据格式
常用SpringBoot注解汇总与用法说明
这些注解的使用和组合是Spring Boot快速开发和微服务实现的基础,通过它们,可以有效地指导Spring容器进行类发现、自动装配、配置、代理和管理等核心功能。开发者应当根据项目实际需求,运用这些注解来优化代码结构和服务逻辑。
382 12
|
4月前
|
传感器 Java 数据库
探索Spring Boot的@Conditional注解的上下文配置
Spring Boot 的 `@Conditional` 注解可根据不同条件动态控制 Bean 的加载,提升应用的灵活性与可配置性。本文深入解析其用法与优势,并结合实例展示如何通过自定义条件类实现环境适配的智能配置。
241 0
探索Spring Boot的@Conditional注解的上下文配置
|
4月前
|
智能设计 Java 测试技术
Spring中最大化@Lazy注解,实现资源高效利用
本文深入探讨了 Spring 框架中的 `@Lazy` 注解,介绍了其在资源管理和性能优化中的作用。通过延迟初始化 Bean,`@Lazy` 可显著提升应用启动速度,合理利用系统资源,并增强对 Bean 生命周期的控制。文章还分析了 `@Lazy` 的工作机制、使用场景、最佳实践以及常见陷阱与解决方案,帮助开发者更高效地构建可扩展、高性能的 Spring 应用程序。
199 0
Spring中最大化@Lazy注解,实现资源高效利用
|
4月前
|
安全 IDE Java
Spring 的@FieldDefaults和@Data:Lombok 注解以实现更简洁的代码
本文介绍了如何在 Spring 应用程序中使用 Project Lombok 的 `@Data` 和 `@FieldDefaults` 注解来减少样板代码,提升代码可读性和可维护性,并探讨了其适用场景与限制。
190 0
Spring 的@FieldDefaults和@Data:Lombok 注解以实现更简洁的代码
|
4月前
|
Java 测试技术 编译器
@GrpcService使用注解在 Spring Boot 中开始使用 gRPC
本文介绍了如何在Spring Boot应用中集成gRPC框架,使用`@GrpcService`注解实现高效、可扩展的服务间通信。内容涵盖gRPC与Protocol Buffers的原理、环境配置、服务定义与实现、测试方法等,帮助开发者快速构建高性能的微服务系统。
933 0
|
4月前
|
XML Java 测试技术
使用 Spring 的 @Import 和 @ImportResource 注解构建模块化应用程序
本文介绍了Spring框架中的两个重要注解`@Import`和`@ImportResource`,它们在模块化开发中起着关键作用。文章详细分析了这两个注解的功能、使用场景及最佳实践,帮助开发者构建更清晰、可维护和可扩展的Java应用程序。
273 0