java开发工具(6)你还在写代码校验入参么?快使用Bean validation

在上一篇博客《java开发工具(5)你的代码规范么?快用阿里规约插件扫描下吧》.中,我讲了怎么校验你的代码规范,在代码规范中就有一条是,必须对入参进行校验,也许你平时也会对入参进行校验,你校验的方式可能是这样的:


if (id == null) {
   throw new BizException(BizErrorInfoEnum.DATA_NOT_EXIST,
                          BizErrorInfoEnum.DATA_NOT_EXIST.getMessage() + ":id");
}

这样的校验方式也是可行的,起码符合代码规约。
但是这样的校验方式并不优雅,在springBoot中自带了校验参数的组件Bean Validation
只要类的前面有@Valid注解,你可以通过如下方式进行代码校验

@NotNull(message="id不能为空")
private Long id;

但是仅仅如此,你还不算学会了Bean Validation,我希望通过我的这篇博客,你能掌握入参校验的原理以及各种类型的入参该如何进行校验。

一、SpringBoot如何通过一个注解校验

1.依赖

在spring-boot-starter-web包中,依赖了pom文件hibernate-validator包,hibernate-validator又依赖了包validation-api,这个两个包里面就包含了入参校验的各种注解。

2、使用

	@GetMapping
    public Integer getOperationBillsByCustomerId(@Valid query Query) 

在方法的入参中加上@Valid注解,并在类中属性加上需要校验的注解即可:

    @NotNull(message = "id不能为空")
    private Long id;

二、都有哪些验证

验证的各种类,类似@NotNull这样的注解,有好几十种,就算我在这里列举出来了,你也未必记得住,而我更希望通过我的这篇文章能让你自由的使用各种验证类注解。
在Idea的右侧,有一个Bean Validation的按钮,如下图:
Bean Validation
上图中我划分两个区域

  • Bean Validation按钮:1处点击这个按钮打开所有的Bean Validation的注解
  • 2处:上面就有各种校验的注解了,你可以随意使用

三、分组校验

你可能会遇到这种情况,保存和修改使用的是同一个类,修改需要验证id必须存在,而保存不需要验证id,但是如果我使用注解的话,岂不是都要验证id了,无法满足业务需求,此时Bean Validation提供了一个功能,分组
你只要按照如下方式使用即可:

    @NotNull(message = "机构id不能为空",groups = {Group1.class,Group2.class})
    @ApiModelProperty(value = "机构id",required = true)
    private Long id;
    @GetMapping
    public Boolean getUser(@Validated(Group1.class) User user) {

这样就可以根据分组,决定是否做参数校验了。

四、总结

Bean Validation可以让你从繁琐的代码中解救出来,不必写繁琐的验证代码,通过一个注解就可以全全搞定。在本篇博客中,我介绍了

  • Bean Validation的使用方式
  • 各种注解的查看方式
  • 分组功能的使用
    快来解放你的代码,把Bean Validation用起来把
发布了188 篇原创文章 · 获赞 117 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/lz710117239/article/details/104584282