SpringBoot使用Hibernate-validate

本文介绍了如何在SpringBoot应用中使用Hibernate-validate进行参数校验,包括添加Maven依赖、改造DTO实体、接口注解和全局异常处理。同时列举了一些常用的验证注解,如@NotBlank、@Pattern、@NotNull等。

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

本篇文章SpringBoot使用Hibernate-validate以及一些常用的校验

Maven依赖

SpringBoot2.3.x 以前 如果按照 SpringBoot 的方式引入了 spring-boot-starter-web,则不需要特意引入 spring-boot-starter-validation
SpringBoot2.3.x 以后需要显引入

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

将参数接受实体DTO进行改造

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@ApiModel(description = "api模型")
@Data
public class TAccessApiListDTO implements Serializable {

    @ApiModelProperty(name = "id",value = "主键id")
    @NotNull(message="id不能为空")
    private Integer id;

    @ApiModelProperty(name = "apiname",value = "api名称")
    @Length(max = 50)
    @NotBlank(message = "接口名称不能为空")
    private String apiname ;


    @ApiModelProperty(name = "request_method",value = "请求方式:GET,POST")
    @NotBlank(message = "请求方式不能为空")
    private String request_method ;


    @ApiModelProperty(name = "version",value = "api版本号")
    @NotBlank(message = "版本号不能为空")
    private String version ;


    @ApiModelProperty(name = "apiparameter",value = "api参数")
    private String apiparameter ;


    @ApiModelProperty(name = "url",value = "url地址")
    @NotBlank(message = "接口地址不能为空")
    //@Pattern(regexp = "^((https|http)?:\\/\\/)[^\\s]+$",message = "请填写合法的URL")
    private String url ;
}

接口改造

在接口原有基础上添加注解 @Valid 或者 @Validated(spring 自带的,多了分组功能,其他请自行查资料)

@Api(description = "api管理模块")
@RestController
@RequestMapping("/apimanage")
public class ApimanageController {

    @Autowired
    private ApimanageService apimanageService;

    @ApiOperation(value = "api修改")
    @PostMapping("/update")
    public JsonResult update(@RequestBody @Valid TAccessApiListDTO accessApiListDto){
        apimanageService.updateTAccessApiList(accessApiListDto);
        return JsonResult.successModelResult(null);
    }
}

全局异常拦截处理

请在自己原有的全局异常拦截器中新增 MethodArgumentNotValidException 异常的处理

@Slf4j
@RestControllerAdvice 
public class GlobalExceptionHandler {

    @ExceptionHandler(MethodArgumentNotValidException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public JsonResult validationError(MethodArgumentNotValidException ex) {
        FieldError fieldError = ex.getBindingResult().getFieldError();
        log.error(fieldError.getField()+fieldError.getDefaultMessage());
        return JsonResult.BuildModelResult("9999",false, fieldError.getField()+fieldError.getDefaultMessage(),null);
    }
}

到此 SpringBoot 使用 Hibernate-validate 校验,讲完了

常用的校验

1. @NotBlank
	 适合字符串的非空校验
 @NotBlank(message = "url不能为空")
2. @Pattern
	使用正则表达式进行校验
	例如URL的校验
@Pattern(regexp = "^((https|http)?:\\/\\/)[^\\s]+$",message = "请填写合法的URL")
4. @NotNull
	对象不能为 null
 @NotNull(message="id不能为空")
5. @Length
	字符串长度判断
@Length(min = 1,max = 500,message = "字符串长度必须在1-500之间")
6. @Size
	判断集合的大小
@Size(min = 1,max = 100,message = "集合大小必须在1-100之间")
7. @Email
	邮箱格式判断
@Email(message = "邮箱格式不正确")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值