在上一篇博客《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按鈕: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用起來把