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

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

推荐写法

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适用性
@NotEmptyCharSequence, Collection, Map, Array非 null 且 size > 0❌ 报错 (拦截)❌ 报错 (拦截)✅ 最佳选择
@NotNull任何对象仅仅是非 null✅ 通过 (不拦截)❌ 报错 (拦截)❌ 不够用 (允许空集合)
@Size(min=1)Collection, Map, Array, Stringsize >= min❌ 报错 (拦截)✅ 通过 (通常视为有效,除非加@NotNull)⚠️ 也可以用,但语义不如 NotEmpty 清晰
@NotBlankString (字符串)非 null 且包含非空格字符N/AN/A❌ 仅限字符串,不能用于 List

注意事项

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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>
    
  2. 触发验证
    注解加上后,必须在 Controller 层的方法参数前加上 @Valid@Validated 才会生效:

    @PostMapping("/create")
    public Result createOrder(@RequestBody @Valid OrderRequest request) {
        // ...
    }
    

总结:请直接使用 @NotEmpty

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰糖心书房

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值