SpringBoot使用Hibernate Validator校验参数

本文介绍了如何在SpringBoot中利用Hibernate Validator进行参数校验,避免Controller层代码臃肿。通过实体类注解、全局异常处理等方式,实现了优雅的参数验证,包括@RequestBody的JSON入参和普通表单入参的处理。并提供了完整的项目源代码链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hibernate Validator

后端开发中,常常需要对入参进行非空、非法格式校验,以确保数据的安全性和准确性。一般会在Controller层进行校验,此类代码臃肿且规律,在参数多的情况下简直是灾难,严重影响代码的整洁度。如下代码所示:

@PostMapping("")
public JsonData save(Activity activity){
    if (StringUtils.isEmpty(activity.getName())){
        return JsonData.fail("活动名称不能为空");
    }
    if (StringUtils.isEmpty(activity.getType())){
        return JsonData.fail("活动类型不能为空");
    }
    if (activity.getStartTime() == null){
        return JsonData.fail("开始时间不能为空");
    }
    if (activity.getEndTime() == null){
        return JsonData.fail("结束时间不能为空");
    }

    activityService.save(activity);

    return JsonData.success(activity);
}

Hibernate Validator提供了使用注解来校验参数,可以优雅的解决这个问题。SpringBoot已加入Hibernate Validator依赖,不需要单独添加。下面从不同入参形式来看Hibernate Validator如何校验参数。

校验实体类型参数

参数比较多时,一般会使用dto、vo、po来封装参数,在实体类中课加入以下注解,其他注解请自行查阅相关文档。

private Integer id;

@NotBlank(message = "活动名称不能为空")
private String name;

@NotBlank(message = "活动类型不能为空")
private String type;

@NotNull(message = "开始时间不能为空")
private Date startTime;

@NotNull(message = "结束时间不能为空")
private Date endTime;

private String description;

在controller方法中使用@Validated注解实体类,同时引入参数BindingResult,BindingResult就是校验结果,然后将结果遍历返回即可。

@PostMapping("")
public Jso
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值