当前位置:   article > 正文

SpringBoot Validation自定义注解之校验指定最小整数_springvalidtion integer 只能取0和1

springvalidtion integer 只能取0和1

1,引入核心关键依赖

  1. <!--数据校验-->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-validation</artifactId>
  5. </dependency>

2,自定义注解

  1. package com.taia.yms.aop.validate;
  2. import javax.validation.Constraint;
  3. import javax.validation.Payload;
  4. import java.lang.annotation.*;
  5. @Target({ElementType.FIELD, ElementType.TYPE})
  6. @Retention(RetentionPolicy.RUNTIME)
  7. @Documented
  8. @Constraint(validatedBy = {IntegerMinValidator.class}) // 标明由哪个类执行校验逻辑
  9. /**
  10. * 校验字段为整数 且 大于某个值场景
  11. */
  12. public @interface IntegerMin {
  13. String message() default "{com.taia.yms.aop.validate.IntegerMin.message}";
  14. Class<?>[] groups() default { };
  15. Class<? extends Payload>[] payload() default { };
  16. int value() default 0;
  17. }

3,定义核心校验类

  1. package com.taia.yms.aop.validate;
  2. import lombok.extern.slf4j.Slf4j;
  3. import javax.validation.ConstraintValidator;
  4. import javax.validation.ConstraintValidatorContext;
  5. import java.util.regex.Pattern;
  6. @Slf4j
  7. public class IntegerMinValidator implements ConstraintValidator<IntegerMin, Object> {
  8. private int minValue;
  9. // 匹配整数(包括正数和负数)
  10. private static final Pattern pattern = Pattern.compile("-?\\d+");
  11. @Override
  12. public void initialize(IntegerMin constraintAnnotation) {
  13. minValue = constraintAnnotation.value();
  14. }
  15. @Override
  16. public boolean isValid(Object object, ConstraintValidatorContext context) {
  17. try{
  18. String str = object == null ? "0" :String.valueOf(object);
  19. if(!pattern.matcher(str).matches()){
  20. log.warn("IntegerMinValidator->isValid value is not Integer!");
  21. return false;
  22. }
  23. int value = Integer.valueOf(str);
  24. return value >= minValue;
  25. }catch (Exception e){
  26. log.warn("IntegerMinValidator->isValid error,message:{}",e.getMessage());
  27. return false;
  28. }
  29. }
  30. }

4,使用

  1. @IntegerMin(value = -1,message = "adderRetrieveLayer 值范围为-1或大于0的整数")
  2. private Integer adderRetrieveLayer;

参照:

SpringBoot Validation参数校验 详解自定义注解规则和分组校验_spring valid 自定义注解 不同条件-CSDN博客
SpringBoot自定义validation注解校验参数只能为指定的值_springboot项目 validation 怎么限制参数只能是 -1和1-CSDN博客


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/624694
推荐阅读
相关标签
  

闽ICP备14008679号