关于本文
本文介绍了如何使用SpringBoot的validation组件实现优雅的参数校验,相比于传统的业务层校验代码,validation能够更好的降低代码耦合度,让业务层只需关注业务逻辑,同时提高了代码美观程度与可读性。

如何使用
首先,需要引入相关依赖:
org.springframework.boot spring-boot-starter-validation
引入依赖后我们就可以使用validation了。
接下来看下具体使用方式:
- 为实体类的参数添加注解制定校验规则。
- 在控制器层进行注解声明校验规则和错误提示信息。
- 统一异常处理。
SpringValidation可以很方便的制定校验规则,并且能自动完成校验。我们只要在需要校验的字段上加入相关注解,同时可以指定校验失败的提示信息。
注:下面表格中列出一些常用校验注解供参考。
| 注解 | 功能 |
|---|---|
| @AssertFalse | 可以为null,如果不为null的话必须为false |
| @AssertTrue | 可以为null,如果不为null的话必须为true |
| @DecimalMax | 设置不能超过最大值 |
| @DecimalMin | 设置不能超过最小值 |
| @Digits | 设置必须是数字且数字整数的位数和小数的位数必须在指定范围内 |
| @Future | 日期必须在当前日期的未来 |
| @Past | 日期必须在当前日期的过去 |
| @Max | 最大不得超过此最大值 |
| @Min | 最大不得小于此最小值 |
| @NotNull | 不能为null,可以是空 |
| @Null | 必须为null |
| @Pattern | 必须满足指定的正则表达式 |
| @Size | 集合、数组、map等的size()值必须在指定范围内 |
| 必须是email格式 | |
| @Length | 长度必须在指定范围内 |
| @NotBlank | 字符串不能为null,字符串trim()后也不能等于“” |
| @NotEmpty | 不能为null,集合、数组、map等size()不能为0;字符串trim()后可以等于“” |
| @Range | 值必须在指定范围内 |
| @URL | 必须是一个URL |
配置完毕后,只需要在控制器需要校验的对象上加入@Valid注解即可。
前两步配置完成后,当传入参数不符合校验规则时,程序就会抛出MethodArgumentNotValidException异常。我们通过Spring统一异常处理,将该异常封装成规范响应格式。
结语
SpringBoot接口参数校验方式改进为validation后,业务方法中只包含业务逻辑,代码变得更加简洁明了;同时降低了代码耦合度,让业务层只需关注业务逻辑,轻松构建后端接口;并且validation提供了很多丰富的校验规则,只需要加上注解即可使用,大家可以继续查阅官方文档了解。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/5999.html
