????????對(duì)某個(gè)多字段的實(shí)體進(jìn)行驗(yàn)證的話指厌,會(huì)寫很多麻煩而且冗余的代碼
一、在業(yè)務(wù)邏輯層驗(yàn)證:
????????我們可能都熟悉在Controller
層進(jìn)行參數(shù)驗(yàn)證踊跟,在業(yè)務(wù)邏輯層進(jìn)行驗(yàn)證可能使用不多踩验,在我寫外放機(jī)構(gòu)交易接口的時(shí)候遇到一個(gè)問(wèn)題,首先來(lái)說(shuō)說(shuō)我這個(gè)接口的設(shè)計(jì)商玫,我的接口請(qǐng)求路徑只有一個(gè)箕憾,但是可以處理不同的業(yè)務(wù),根據(jù)機(jī)構(gòu)傳遞的業(yè)務(wù)碼判斷業(yè)務(wù)類型拳昌,進(jìn)行不同處理袭异,機(jī)構(gòu)請(qǐng)求這個(gè)接口,在Controller
層首先會(huì)進(jìn)行數(shù)據(jù)校驗(yàn)炬藤,但是校驗(yàn)的僅僅是暴露的不影響數(shù)據(jù)安全的數(shù)據(jù)御铃,校驗(yàn)通過(guò)我需要將加密字段中的參數(shù)取出碴里,根據(jù)機(jī)構(gòu)私鑰進(jìn)行解密,獲取到數(shù)據(jù)上真,但是這些數(shù)據(jù)你還要進(jìn)行校驗(yàn)是否合法咬腋,這就需要在業(yè)務(wù)邏輯層進(jìn)行驗(yàn)證
(1)、首先定義一個(gè)實(shí)體對(duì)象睡互,在參數(shù)上使用驗(yàn)證注解
(2)帝火、在業(yè)務(wù)層接口中的方法參數(shù)上使用@Valid
注解
(3)、在接口實(shí)現(xiàn)類添加@Validation
注解
(4)湃缎、捕獲全局ConstraintViolationException
異常
(5)、Controller
方法上并為添加@Valid
注解
請(qǐng)求測(cè)試:
建議以后將數(shù)據(jù)驗(yàn)證全部放到業(yè)務(wù)層蠢壹。