使用@Validate分組驗(yàn)證參數(shù)
@Validate分組驗(yàn)證參數(shù)
public interface Group {
/**
* 新增操作
*/
interface ADD {}
/**
* 更新操作
*/
interface UPDATE {}
/**
* 更新操作
*/
interface DELETE {}
}
@Data
@EqualsAndHashCode(callSuper = false)
public class StudentInfoDto implements Serializable {
private static final long serialVersionUID = 1L;
@JsonSerialize(using = ToStringSerializer.class)
@NotBlank(message = "主鍵不能為空", groups = {Group.DELETE.class, Group.UPDATE.class})
private String id;
private String name;
}
@PostMapping(value = "/delete")
public Result delete(@RequestBody @Validated(value = Group.DELETE.class) final StudentInfoDto studentInfoDto) {
return studentService.delete(studentInfoDto.getId());
}
@Validated 注解是 Spring Framework 提供的一種用于方法級(jí)別參數(shù)驗(yàn)證的注解。
它通常與 Bean Validation(JSR-380)規(guī)范結(jié)合使用,用于對(duì)方法參數(shù)進(jìn)行驗(yàn)證。
這個(gè)注解可以放在方法的參數(shù)列表上,表示需要對(duì)該參數(shù)進(jìn)行驗(yàn)證。
在你提到的 @Validated(value = Group.DELETE.class) 中,value = Group.DELETE.class 是一個(gè)參數(shù),它的作用是指定驗(yàn)證時(shí)使用的驗(yàn)證分組(Validation Group)。
驗(yàn)證分組可以用于在不同場(chǎng)景下執(zhí)行不同的驗(yàn)證邏輯。
在這里,Group.DELETE.class 可能是一個(gè)自定義的驗(yàn)證分組類,它定義了在執(zhí)行刪除操作時(shí)需要進(jìn)行的驗(yàn)證規(guī)則。
舉個(gè)例子
假設(shè)有一個(gè)用戶刪除的方法,只有當(dāng)用戶的權(quán)限滿足一定條件時(shí)才能執(zhí)行刪除操作。
那么就可以定義一個(gè)刪除操作的驗(yàn)證分組,其中包含對(duì)用戶權(quán)限的驗(yàn)證規(guī)則。
當(dāng)方法參數(shù)被 @Validated(value = Group.DELETE.class) 注解標(biāo)記時(shí),就會(huì)使用指定的驗(yàn)證分組對(duì)方法參數(shù)進(jìn)行驗(yàn)證。
需要注意
@Validated 注解是 Spring 框架提供的,與 @Valid 注解不同,后者是 Bean Validation(JSR-380)規(guī)范中的注解。
雖然它們都可以用于參數(shù)驗(yàn)證,但 @Validated 注解更加靈活,支持分組驗(yàn)證等功能。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java利用樸素貝葉斯分類算法實(shí)現(xiàn)信息分類
貝葉斯分類算法是統(tǒng)計(jì)學(xué)的一種分類方法,它是一類利用概率統(tǒng)計(jì)知識(shí)進(jìn)行分類的算法。本文將利用樸素貝葉斯分類算法實(shí)現(xiàn)信息分類,需要的可以參考一下2022-06-06
RabbitMQ消息隊(duì)列實(shí)現(xiàn)延遲任務(wù)示例
這篇文章主要為大家介紹了RabbitMQ消息隊(duì)列實(shí)現(xiàn)延遲任務(wù)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04
java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):棧
這篇文章主要介紹了Java的數(shù)據(jù)解構(gòu)基礎(chǔ),希望對(duì)廣大的程序愛好者有所幫助,同時(shí)祝大家有一個(gè)好成績(jī),需要的朋友可以參考下,希望能給你帶來幫助2021-07-07
圖解Java?ReentrantLock的條件變量Condition機(jī)制
想必大家都使用過wait()和notify()這兩個(gè)方法把,他們主要用于多線程間的協(xié)同處理。而RenentrantLock也支持這樣條件變量的能力,而且相對(duì)于synchronized?更加強(qiáng)大,能夠支持多個(gè)條件變量,本文就來詳細(xì)說說2022-10-10
@Controller、@RestController注解區(qū)別詳解
這篇文章主要介紹了@Controller、@RestController注解區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10

