SpringCloud微服务实战——搭建企业级开发框架(八)(使用注解校验微服务消息参数)
??平时开发过程中,经常要用到参数校验,如果直接在代码逻辑里面写参数校验,代码有点冗余且用起来不是非常方便,显得代码逻辑复杂且重复代码太多,这里我们使用注解的方式进行参数校验,SpringBoot中常用的用于参数校验的注解如下:
@AssertFalse 所注解的元素必须是Boolean类型,且值为false
@AssertTrue 所注解的元素必须是Boolean类型,且值为true
@DecimalMax 所注解的元素必须是数字,且值小于等于给定的值
@DecimalMin 所注解的元素必须是数字,且值大于等于给定的值
@Digits 所注解的元素必须是数字,且值必须是指定的位数
@Future 所注解的元素必须是将来某个日期
@Max 所注解的元素必须是数字,且值小于等于给定的值
@Min 所注解的元素必须是数字,且值小于等于给定的值
@Range 所注解的元素需在指定范围区间内
@NotNull 所注解的元素值不能为null
@NotBlank 所注解的元素值有内容
@Null 所注解的元素值为null
@Past 所注解的元素必须是某个过去的日期
@PastOrPresent 所注解的元素必须是过去某个或现在日期
@Pattern 所注解的元素必须满足给定的正则表达式
@Size 所注解的元素必须是String、集合或数组,且长度大小需保证在给定范围之内
@Email 所注解的元素需满足Email格式
1、在GitEgg-Platform工程的子工程gitegg-platform-boot里添加spring-boot-starter-validation依赖,因为自SpringBoot2.3.X开始spring-boot-starter-web默认不再引入校验框架,这里需要手动引入,pom.xml如下
GitEgg-Platform
com.gitegg.platform
1.0-SNAPSHOT
4.0.0 gitegg-platform-boot
${project.artifactId}
${project.parent.version} jar
org.springframework.boot
spring-boot-starter-web
true
org.springframework.boot
spring-boot-starter-validation
com.gitegg.platform
gitegg-platform-swagger
true
2、GitEgg-Platform工程重新install,在GitEgg-Cloud工程的子工程gitegg-service-system里面新建类SystemDTO.java
package com.gitegg.service.system.dto;
import lombok.Data;
import javax.validation.constraints.*;
@Data
public class SystemDTO {@NotNull
@Min(value = https://www.it610.com/article/10, message ="id必须大于10")
@Max(value = https://www.it610.com/article/150, message ="id必须小于150")
private Long id;
@NotNull(message = "名称不能为空")
@Size(min = 3, max = 20, message = "名称长度必须在3-20之间")
private String name;
}
3、SystemController.java类里面添加参数校验测试接口
package com.gitegg.service.system.controller;
import com.gitegg.platform.boot.common.base.Result;
import com.gitegg.platform.boot.common.exception.BusinessException;
import com.gitegg.service.system.dto.SystemDTO;
import com.gitegg.service.system.service.ISystemService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@RestController
@RequestMapping(value = "https://www.it610.com/article/system")
@AllArgsConstructor
@Api(tags = "gitegg-system")
public class SystemController {private final ISystemService systemService;
@GetMapping(value = "https://www.it610.com/article/list")
@ApiOperation(value = "https://www.it610.com/article/system list接口")
public Object list() {
return systemService.list();
}@GetMapping(value = "https://www.it610.com/article/page")
@ApiOperation(value = "https://www.it610.com/article/system page接口")
public Object page() {
return systemService.page();
}@GetMapping(value = "https://www.it610.com/article/exception")
@ApiOperation(value = "https://www.it610.com/article/自定义异常及返回测试接口")
public Result exception() {
return Result.data(systemService.exception());
}@PostMapping(value = "https://www.it610.com/article/valid")
@ApiOperation(value = "https://www.it610.com/article/参数校验测试接口")
public Result valid(@Valid @RequestBody SystemDTO systemDTO) {
return Result.data(systemDTO);
}
}
4、运行GitEggSystemApplication.java,打开浏览器访问:http://127.0.0.1:8001/doc.html,然后点击左侧的参数校验测试接口,使用Swagger2进行测试,即可查看校验结果
文章图片
5、这里的提示信息用到了上一章节讲到的统一异常处理逻辑:
/**
* 非法请求-参数校验
*/
@ExceptionHandler(value = https://www.it610.com/article/{MethodArgumentNotValidException.class})
public Result handlerMethodArgumentNotValidException(MethodArgumentNotValidException methodArgumentNotValidException) {
//获取异常字段及对应的异常信息
StringBuffer stringBuffer = new StringBuffer();
methodArgumentNotValidException.getBindingResult().getFieldErrors().stream()
.map(t -> t.getField() + t.getDefaultMessage() + ";
")
.forEach(e -> stringBuffer.append(e));
String errorMessage = stringBuffer.toString();
Result result = Result.error(ResultCodeEnum.PARAM_VALID_ERROR, errorSystem + errorMessage);
return result;
}
【SpringCloud微服务实战——搭建企业级开发框架(八)(使用注解校验微服务消息参数)】本文源码在https://gitee.com/wmz1930/GitEgg 的chapter-08分支。
推荐阅读
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- CET4听力微技能一
- 微习惯复盘
- 社保代缴公司服务费包含哪些
- 员工的微信朋友圈是公司的宣传阵地吗()
- 私有化轻量级持续集成部署方案--03-部署web服务(下)
- FBI怎么和恐怖分子谈判
- 探索免费开源服务器tomcat的魅力
- 微雨中的东湖
- 小醉微记|小醉微记|心不安处皆动荡