Spring Bean参数校验Validator

以下2种形式能够用于所有的 Spring bean 不仅仅是 Controller 控制器。

一、原始类型参数

在控制器(或者其余Bean)上应用@Validated注解。

控制器类@RestController@RequestMapping("account")@Validatedpublic class AccountController {    // ......}

在参数前增加校验注解

参数校验@GetMapping("account")public Result<AccountVO> getAccount(@NotNull Long accountId) {    // ......}

二、表单对象参数

参数 AddressForm,增加 @Valid 注解。

表单校验@PostMapping("/address/save")public Object saveAddress(@Valid AddressForm addressForm) {   // ......}
AddressForm 中增加注解:
表单校验@Datapublic class AddressForm {   private Integer id;   @NotBlank   private String name;   @NotBlank(message = "{mobile.not.blank}")   @Pattern(regexp = "^1[34578]\\d{9}$")   private String mobile;   /**    * list 汇合须要增加 @Valid 注解    */   @Valid   private List<Xxx> list;       // ...... }

留神: 示例中 {name.not.blank} 为国际化配置。国际化须要在配置文件下自定义 org/hibernate/validator/ValidationMessages.properties 配置文件。

三、Bean Validation 中罕用注解

@Null       被正文的元素必须为 null@NotNull    被正文的元素必须不为 null@NotBlank   @NotBlank(message =)   验证字符串非null,且长度必须大于0@NotEmpty   被正文的字符串、汇合的必须非空@AssertTrue     被正文的元素必须为 true@AssertFalse    被正文的元素必须为 false@Min(value)     被正文的元素必须是一个数字,其值必须大于等于指定的最小值@Max(value)     被正文的元素必须是一个数字,其值必须小于等于指定的最大值@DecimalMin(value)  被正文的元素必须是一个数字,其值必须大于等于指定的最小值@DecimalMax(value)  被正文的元素必须是一个数字,其值必须小于等于指定的最大值@Size(max=, min=)   被正文的元素的大小必须在指定的范畴内@Digits (integer, fraction)     被正文的元素必须是一个数字,其值必须在可承受的范畴内@Past   被正文的元素必须是一个过来的日期@Future     被正文的元素必须是一个未来的日期@Pattern(regex=,flag=)  被正文的元素必须合乎指定的正则表达式四、Hibernate Validator 罕用注解@Email  被正文的元素必须是电子邮箱地址@Length(min=,max=)  被正文的字符串的大小必须在指定的范畴内@Range(min=,max=,message=)  被正文的元素必须在适合的范畴内

五、Validator 分组

分组名             形容QueryGroup    查问应用的分组CreateGroup    创立应用的分组UpdateGroup    更新应用的分组DeleteGroup    删除应用的分组
5.1 模型中增加 Validator 分组
模型示例public class SysConfig implements Serializable {     /**     * 主键ID     */    @TableId(value = "id", type = IdType.AUTO)    @Null(groups = CreateGroup.class)    @NotNull(groups = UpdateGroup.class)    private Long id;     // 省略 }
5.2 控制器办法中指定应用的校验分组
控制器示例@ApiOperation("批改参数配置")@PostMappingpublic void edit(@Validated(UpdateGroup.class) @RequestBody SysConfig entity) {    // 省略}

参考链接:
https://blog.csdn.net/qq_3100...
https://www.cnblogs.com/Never...
https://segmentfault.com/q/10...