From ca3efd0073ce61128509da2812a5c479b1aafd01 Mon Sep 17 00:00:00 2001 From: fanxb Date: Fri, 8 Oct 2021 23:45:27 +0800 Subject: [PATCH] add --- .../controller/TestController.java | 9 +++++ .../validation/CustomCheckValidator.java | 26 +++++++++++++++ .../validation/annotation/CustomCheck.java | 33 +++++++++++++++++++ .../exceptiontest/entity/vo/TestBody4.java | 20 +++++++++++ 4 files changed, 88 insertions(+) create mode 100644 spring-boot/paramsCheck/src/main/java/com/fanxb/exceptiontest/entity/validation/CustomCheckValidator.java create mode 100644 spring-boot/paramsCheck/src/main/java/com/fanxb/exceptiontest/entity/validation/annotation/CustomCheck.java create mode 100644 spring-boot/paramsCheck/src/main/java/com/fanxb/exceptiontest/entity/vo/TestBody4.java diff --git a/spring-boot/paramsCheck/src/main/java/com/fanxb/exceptiontest/controller/TestController.java b/spring-boot/paramsCheck/src/main/java/com/fanxb/exceptiontest/controller/TestController.java index 31b30ea..039344d 100644 --- a/spring-boot/paramsCheck/src/main/java/com/fanxb/exceptiontest/controller/TestController.java +++ b/spring-boot/paramsCheck/src/main/java/com/fanxb/exceptiontest/controller/TestController.java @@ -8,6 +8,7 @@ import com.fanxb.exceptiontest.entity.exception.CustomBusinessException; import com.fanxb.exceptiontest.entity.vo.TestBody; import com.fanxb.exceptiontest.entity.vo.TestBody2; import com.fanxb.exceptiontest.entity.vo.TestBody3; +import com.fanxb.exceptiontest.entity.vo.TestBody4; import org.hibernate.validator.constraints.Range; import org.springframework.validation.BindException; import org.springframework.validation.annotation.Validated; @@ -65,4 +66,12 @@ public class TestController { return null; } + /** + * 自定义校验 + */ + @PostMapping("/test6") + public Result test6(@Validated @RequestBody TestBody4 testBody) { + return null; + } + } diff --git a/spring-boot/paramsCheck/src/main/java/com/fanxb/exceptiontest/entity/validation/CustomCheckValidator.java b/spring-boot/paramsCheck/src/main/java/com/fanxb/exceptiontest/entity/validation/CustomCheckValidator.java new file mode 100644 index 0000000..b86d56d --- /dev/null +++ b/spring-boot/paramsCheck/src/main/java/com/fanxb/exceptiontest/entity/validation/CustomCheckValidator.java @@ -0,0 +1,26 @@ +package com.fanxb.exceptiontest.entity.validation; + +import com.fanxb.exceptiontest.entity.validation.annotation.CustomCheck; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +/** + * @author fanxb + * @date 2021-10-08 23:27 + */ +public class CustomCheckValidator implements ConstraintValidator { + private String param1; + + @Override + public void initialize(CustomCheck constraintAnnotation) { + //在此获取校验参数 + param1 = constraintAnnotation.param1(); + ConstraintValidator.super.initialize(constraintAnnotation); + } + + @Override + public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) { + return param1 != null && param1.equals(s); + } +} diff --git a/spring-boot/paramsCheck/src/main/java/com/fanxb/exceptiontest/entity/validation/annotation/CustomCheck.java b/spring-boot/paramsCheck/src/main/java/com/fanxb/exceptiontest/entity/validation/annotation/CustomCheck.java new file mode 100644 index 0000000..39bf8f2 --- /dev/null +++ b/spring-boot/paramsCheck/src/main/java/com/fanxb/exceptiontest/entity/validation/annotation/CustomCheck.java @@ -0,0 +1,33 @@ +package com.fanxb.exceptiontest.entity.validation.annotation; + +import com.fanxb.exceptiontest.entity.validation.CustomCheckValidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author fanxb + * @date 2021-10-08-23:22 + */ + +@Target({ElementType.FIELD}) //作用于字段 +@Retention(RetentionPolicy.RUNTIME)//生命周期 +@Constraint(validatedBy = CustomCheckValidator.class)//校验逻辑实现类 +public @interface CustomCheck { + + String message() default "自定义校验默认错误提示"; + + /** + * 自定义参数,可传递到校验实现类CustomCheckValidator中 + */ + String param1() default ""; + + Class[] groups() default {}; //用于分组校验 + + Class[] payload() default {}; + +} diff --git a/spring-boot/paramsCheck/src/main/java/com/fanxb/exceptiontest/entity/vo/TestBody4.java b/spring-boot/paramsCheck/src/main/java/com/fanxb/exceptiontest/entity/vo/TestBody4.java new file mode 100644 index 0000000..611a455 --- /dev/null +++ b/spring-boot/paramsCheck/src/main/java/com/fanxb/exceptiontest/entity/vo/TestBody4.java @@ -0,0 +1,20 @@ +package com.fanxb.exceptiontest.entity.vo; + +import com.fanxb.exceptiontest.entity.consistant.Insert; +import com.fanxb.exceptiontest.entity.consistant.Update; +import com.fanxb.exceptiontest.entity.validation.annotation.CustomCheck; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @author fanxb + * @date 2021-09-28-下午4:29 + */ +@Data +public class TestBody4 { + @CustomCheck(message = "此参数固定为fff", param1 = "fff") + private String param1; + @CustomCheck(message = "此参数固定为ggg", param1 = "ggg") + private String param2; +}