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用起來把
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章