springboot统一异常处理,JSR303后端校验,分组校验,自定义校验注解实战编写
文章目录
前言
本文基于springBoot构建后端校验功能,编写统一异常处理功能
一、JSR303后端校验
1.引入pom依赖
<!-- JSR303校验-->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.13.Final</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
</dependency>
2.创建分组接口
提示:分组标识作用,需要几个分组创几个
package com.bgg.common.vaild;
/**
* 校验新增分组接口,只做标识用
* @author lmc
* @date 2021/3/22
* */
public interface AddGroup {
}
package com.bgg.common.vaild;
/**
* 校验新增分组接口,只做标识用
* @author lmc
* @date 2021/3/22
* */
public interface UpdateGroup {
}
package com.bgg.common.vaild;
/**
* 校验修改状态分组,用于标识
*/
public interface UpdateStatusGroup {
}
3.创建自定义校验注解
提示:根据自己项目实际需求,若无特殊校验可以不写
3.1创建自定义注解
提示:需要指定校验器3.2,和默认异常消息路径3.3
package com.bgg.common.vaild;
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;
/**
* 自定义注解
*/
@Documented
@Constraint(validatedBy = {
ListValueConstraintValidator.class}) //指定校验器
@Target({
ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
public @interface ListValue {
String message() default "{com.bgg.common.vaild.ListValue.message}";
Class<?>[] groups() default {
};
Class<? extends Payload>[] payload() default {
};
int[] vals() default {
};
}
3.2创建校验器
package com.bgg.common.vaild;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.HashSet