Spring Boot全局异常处理非法参数
应用场景
在一个项目中我们需要对接口中传入的参数进行非法性检查,当参数非法时,抛出异常,然后返回统一的错误信息。
校验注解
Bean Validation中内置的校验注解:
Constraint | 描述 |
---|---|
@Null | 被注解的元素必须为null |
@NotNull | 被注解的元素必须不为null |
@AssertTrue | 被注解的元素必须为true |
@AssertFalse | 被注解的元素必须为false |
@Min(value) | 被注解的元素必须是一个数字,其值必须大于等于指定的最小值 |
@Max(value) | 被注解的元素必须是一个数字,其值必须小于等于指定的最大值 |
@DecimalMin(value) | 被注解的元素必须是一个数字,其值必须大于等于指定的最小值 |
@DecimalMax(value) | 被注解的元素必须是一个数字,其值必须小于等于指定的最大值 |
@Size(max,min) | 被注解的元素大小必须在指定的范围内 |
@Digits(integer,fraction) | 被注解的元素必须是一个数组,其值必须在可接受的范围内 |
@Past | 被注解的元素必须是一个过去的日期 |
@Future | 被注解的元素必须是一个将来的日期 |
@Pattern(value) | 被注解的元素必须符合指定的正则表达式 |
Hibernate Validator附加的校验注解:
Constraint | 描述 |
---|---|
@NotBlank | 被注解的元素必须非null,且长度必须大于0,并只能作用于String类型的字段上 |
被注解的元素必须是电子邮箱地址 | |
@Length(min,max) | 被注解的元素大小必须在指定的范围内 |
@NotEmpty | 被注解的元素必须非空 |
@Range(min,max) | 被注解的元素必须在合适的范围内 |
添加测试Bean
添加测试Bean,测试类中定义几个字段,并且每个字段都做一定的限制
1 | package com.zmjwdzjl.demo.bean; |
添加测试接口
在接口中使用@Validated注解对参数进行合法性检查,如果参数合法,返回原始数据
1 | "登录接口") (value = |
添加异常返回类
如果未添加全局异常处理,将会使用默认的异常处理,但是返回的结果和自己的数据结构有很大的差异,对于前端处理返回结果也很麻烦。可以自定义参数异常返回的数据类
1 | package com.zmjwdzjl.demo.bean; |
添加全局异常处理
1 | package com.zmjwdzjl.demo.exception; |