Springboot中優(yōu)雅進(jìn)行字段校驗(yàn)
點(diǎn)擊藍(lán)色“黃小斜學(xué)Java”關(guān)注我喲
加個(gè)“星標(biāo)”,每天和你一起多進(jìn)步一點(diǎn)點(diǎn)!
| Controller層 VS Service層
去網(wǎng)上查閱了一些資料,一般推薦與業(yè)務(wù)無(wú)關(guān)的放在Controller層中進(jìn)行校驗(yàn),而與業(yè)務(wù)有關(guān)的放在Service層中進(jìn)行校驗(yàn)。
那么如何將參數(shù)校驗(yàn)寫的優(yōu)雅美觀呢,如果都是if - else,就感覺(jué)代碼寫的很low,還好有輪子可以使用。
| 常用校驗(yàn)工具類
使用Hibernate Validate
引入依賴
????org.hibernate
????hibernate-validator
????4.3.1.Final ?
常用注解說(shuō)明

使用姿勢(shì)
需要搭配在Controller中搭配@Validated或@Valid注解一起使用,@Validated和@Valid注解區(qū)別不是很大,一般情況下任選一個(gè)即可,區(qū)別如下:

雖然@Validated比@Valid更加強(qiáng)大,在@Valid之上提供了分組功能和驗(yàn)證排序功能,不過(guò)在實(shí)際項(xiàng)目中一直沒(méi)有用到過(guò)。
Hibernate-validate框架中的注解是需要加在實(shí)體中一起使用的。
public?class?DataSetSaveVO?{
????//唯一標(biāo)識(shí)符為空
????@NotBlank(message?=?"user?uuid?is?empty")
????//用戶名稱只能是字母和數(shù)字
????@Pattern(regexp?=?"^[a-z0-9]+$",?message?=?"user?names?can?only?be?alphabetic?and?numeric")
????@Length(max?=?48,?message?=?"user?uuid?length?over?48?byte")
????private?String?userUuid;
????//數(shù)據(jù)集名稱只能是字母和數(shù)字
????@Pattern(regexp?=?"^[A-Za-z0-9]+$",?message?=?"data?set?names?can?only?be?letters?and?Numbers")
????//文件名稱過(guò)長(zhǎng)
????@Length(max?=?48,?message?=?"file?name?too?long")
????//文件名稱為空
????@NotBlank(message?=?"file?name?is?empty")
????private?String?name;
????//數(shù)據(jù)集描述最多為256字節(jié)
????@Length(max?=?256,?message?=?"data?set?description?length?over?256?byte")
????//數(shù)據(jù)集描述為空
????@NotBlank(message?=?"data?set?description?is?null")
????private?String?description;
}
說(shuō)明:message字段為不符合校驗(yàn)規(guī)則時(shí)拋出的異常信息。
@PostMapping
public?ResponseVO?createDataSet(@Valid?@RequestBody?DataSetSaveVO?dataSetVO)?{
????return?ResponseUtil.success(dataSetService.saveDataSet(dataSetVO));
}
說(shuō)明:在校驗(yàn)的實(shí)體DataSetSaveVO旁邊添加@Valid或@Validated注解。
使用commons-lang3
引入依賴
????org.apache.commons
????commons-lang3
????3.4
常用方法說(shuō)明

測(cè)試代碼
//StringUtils.isEmpty
System.out.println(StringUtils.isEmpty(""));??//true
System.out.println(StringUtils.isEmpty("??"));??//false
//StringUtils.isNotEmpty
System.out.println(StringUtils.isNotEmpty(""));??//false
????????
//StringUtils.isBlank
System.out.println(StringUtils.isBlank(""));??//true
System.out.println(StringUtils.isBlank("?"));??//true
//StringUtils.isNotBlank
System.out.println(StringUtils.isNotBlank("?"));??//false
List?emptyList?=?new?ArrayList<>();
List?nullList?=?null;
List?notEmptyList?=?new?ArrayList<>();
notEmptyList.add(1);
//CollectionUtils.isEmpty
System.out.println(CollectionUtils.isEmpty(emptyList));???//true
System.out.println(CollectionUtils.isEmpty(nullList));???//true
System.out.println(CollectionUtils.isEmpty(notEmptyList));???//false
//CollectionUtils.isNotEmpty
System.out.println(CollectionUtils.isNotEmpty(emptyList));???//false
System.out.println(CollectionUtils.isNotEmpty(nullList));???//false
System.out.println(CollectionUtils.isNotEmpty(notEmptyList));???//true
| 自定義注解
轉(zhuǎn)自:何甜甜在嗎
鏈接:https://juejin.cn/post/6913735652806754311
評(píng)論
圖片
表情
