Spring Boot 项目中判断集合(List、Set、Map)不能为空且不为 null的注解使用

在 Spring Boot (结合 Bean Validation / Hibernate Validator) 中,判断集合(List、Set、Map)不能为空且不为 null,最常用且语义最准确的注解是 @NotEmpty

推荐写法

java 复制代码
import jakarta.validation.constraints.NotEmpty; // Spring Boot 3.x
// import javax.validation.constraints.NotEmpty; // Spring Boot 2.x 及以下

public class OrderRequest {

    @NotEmpty(message = "订单项ID集合不能为空")
    private List<Long> orderItemIds;

    // getter and setter...
}

为什么选 @NotEmpty?(与其他注解的对比)

注解 作用对象 行为描述 集合 [] (size=0) 集合 null 适用性
@NotEmpty CharSequence, Collection, Map, Array 非 null 且 size > 0 ❌ 报错 (拦截) ❌ 报错 (拦截) ✅ 最佳选择
@NotNull 任何对象 仅仅是非 null ✅ 通过 (不拦截) ❌ 报错 (拦截) ❌ 不够用 (允许空集合)
@Size(min=1) Collection, Map, Array, String size >= min ❌ 报错 (拦截) ✅ 通过 (通常视为有效,除非加@NotNull) ⚠️ 也可以用,但语义不如 NotEmpty 清晰
@NotBlank String (字符串) 非 null 且包含非空格字符 N/A N/A ❌ 仅限字符串,不能用于 List

注意事项

  1. 依赖引入

    从 Spring Boot 2.3 开始,Validation 启动器被独立出来了,如果你的项目中注解无法导入,需要手动在 pom.xml 中添加:

    xml 复制代码
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>
  2. 触发验证

    注解加上后,必须在 Controller 层的方法参数前加上 @Valid@Validated 才会生效:

    java 复制代码
    @PostMapping("/create")
    public Result createOrder(@RequestBody @Valid OrderRequest request) {
        // ...
    }

总结:请直接使用 @NotEmpty

相关推荐
+VX:Fegn089523 分钟前
计算机毕业设计|基于springboot + vue在线音乐播放系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
code bean1 小时前
Flask图片服务在不同网络接口下的路径解析问题及解决方案
后端·python·flask
+VX:Fegn08951 小时前
计算机毕业设计|基于springboot + vue律师咨询系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
努力的小郑1 小时前
2025年度总结:当我在 Cursor 里敲下 Tab 的那一刻,我知道时代变了
前端·后端·ai编程
困知勉行19852 小时前
springboot整合redis
java·spring boot·redis
颜淡慕潇3 小时前
深度解析官方 Spring Boot 稳定版本及 JDK 配套策略
java·后端·架构
Victor3563 小时前
Hibernate(28)Hibernate的级联操作是什么?
后端
Victor3563 小时前
Hibernate(27)Hibernate的查询策略是什么?
后端
中年程序员一枚3 小时前
Springboot报错Template not found For name “java/lang/Object_toString.sql
java·spring boot·python
superman超哥3 小时前
Rust 内部可变性模式:突破借用规则的受控机制
开发语言·后端·rust·rust内部可变性·借用规则·受控机制