日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

JSR303校验使用

發布時間:2024/3/13 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JSR303校验使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

前言

一、JSR303是什么?

二、基本使用

1.引入依賴

2.在類上加上注解

3.注解解釋

4.隨后在controller接收參數的時候加上個@Validated

三、分組使用

1.我們定義不同的接口類型(空接口)表示不同的分組

2.在類中的屬性添加注解屬性的時候需要指明分組的名字

3.在Controller方法中啟動校驗規則指定要使用的分組名

注意


前言

在日常開發中,我們現在是否在service里面對接口接收的參數進行校驗,其實這種方法也是行得通,但是若接口接收的是一個類,類里面有很多屬性,這時我們對類里的一個個屬性進行校驗是比較麻煩的,如下面代碼:

public CourseBaseInfoDto addCourse(Long companyId, AddCourseDto dto) {//合法性校驗,對類中每個屬性進行校驗if (StringUtils.isBlank(dto.getName())) {throw new XueChengPlusException("課程名稱為空");}if (StringUtils.isBlank(dto.getMt())) {throw new XueChengPlusException("課程分類為空");}if (StringUtils.isBlank(dto.getSt())) {throw new XueChengPlusException("課程分類為空");}if (StringUtils.isBlank(dto.getGrade())) {throw new XueChengPlusException("課程等級為空");}if (StringUtils.isBlank(dto.getTeachmode())) {throw new XueChengPlusException("教育模式為空");}if (StringUtils.isBlank(dto.getUsers())) {throw new XueChengPlusException("適應人群");}if (StringUtils.isBlank(dto.getCharge())) {throw new XueChengPlusException("收費規則為空");} }

所以我們需要借助?JSR303校驗,就是簡單在類中加幾個注解,就可以在controller中對接口的參數進行校驗,大大增加開發的效率


一、JSR303是什么?

早在JavaEE6規范中就定義了參數校驗的規范,它就是JSR-303,它定義了Bean Validation,即對bean屬性進行校驗。

SpringBoot提供了JSR-303的支持,它就是spring-boot-starter-validation,它的底層使用Hibernate Validator,Hibernate Validator是Bean Validation 的參考實現。

二、基本使用

1.引入依賴

spring-boot-starter-validation的依賴 :

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId> </dependency>

2.在類上加上注解

就以上面那個類為示例給類的屬性加上校驗注解:

@Data @ApiModel(value="AddCourseDto", description="新增課程基本信息") public class AddCourseDto {@NotEmpty(message = "課程名稱不能為空")@ApiModelProperty(value = "課程名稱", required = true)private String name;@NotEmpty(message = "適用人群不能為空")@Size(message = "適用人群內容過少",min = 10)@ApiModelProperty(value = "適用人群", required = true)private String users;@ApiModelProperty(value = "課程標簽")private String tags;@NotEmpty(message = "課程分類不能為空")@ApiModelProperty(value = "大分類", required = true)private String mt;@NotEmpty(message = "課程分類不能為空")@ApiModelProperty(value = "小分類", required = true)private String st;@NotEmpty(message = "課程等級不能為空")@ApiModelProperty(value = "課程等級", required = true)private String grade;@ApiModelProperty(value = "教學模式(普通,錄播,直播等)", required = true)private String teachmode;@ApiModelProperty(value = "課程介紹")private String description;@ApiModelProperty(value = "課程圖片", required = true)private String pic;@NotEmpty(message = "收費規則不能為空")@ApiModelProperty(value = "收費規則,對應數據字典", required = true)private String charge;@ApiModelProperty(value = "價格")private BigDecimal price;}

3.注解解釋

4.隨后在controller接收參數的時候加上個@Validated

@ApiOperation("新增課程基礎信息")@PostMapping("/course")public CourseBaseInfoDto createCourseBase(@RequestBody @Validated({ValidationGroups.Update.class}) AddCourseDto addCourseDto){return courseBaseInfoService.addCourse(1L,addCourseDto);}

三、分組使用

因為我們不同的業務,可能需要不同的校驗規則,所以我們需要使用分組校驗

1.我們定義不同的接口類型(空接口)表示不同的分組

/*** @description 校驗分組*/ public class ValidationGroups {//插入數據的校驗分組public interface Insert{};//更新數據的校驗分組public interface Update{};//刪除數據的校驗分組public interface Delete{};}

2.在類中的屬性添加注解屬性的時候需要指明分組的名字

@NotEmpty(groups = {ValidationGroups.Insert.class},message = "添加課程名稱不能為空")@NotEmpty(groups = {ValidationGroups.Update.class},message = "修改課程名稱不能為空") // @NotEmpty(message = "課程名稱不能為空")@ApiModelProperty(value = "課程名稱", required = true)private String name;

3.在Controller方法中啟動校驗規則指定要使用的分組名

@ApiOperation("新增課程基礎信息") @PostMapping("/course") public CourseBaseInfoDto createCourseBase(@RequestBody @Validated({ValidationGroups.Insert.class}) AddCourseDto addCourseDto){//機構id,由于認證系統沒有上線暫時硬編碼Long companyId = 1L;return courseBaseInfoService.createCourseBase(companyId,addCourseDto); }

再次測試,由于這里指定了Insert分組,所以拋出 異常信息:添加課程名稱不能為空。

如果修改分組為ValidationGroups.Update.class,異常信息為:修改課程名稱不能為空。

注意:

若在Controller方法中啟動校驗規則指定要使用的分組名,那只能對帶有這個分組名的校驗注解的屬性進行校驗

本文參考于黑馬程序員的學成在線課程的資料

總結

以上是生活随笔為你收集整理的JSR303校验使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。