spv简单的 Spring 参数验证库
springmvc springboot 简单轻量好用的参数验证。支持基本类型查参数验证。支持自定义注解的参数验证。使用简单方便。
使用4步配置
1、导入jar
        <dependency>
            <groupId>com.github.fashionbrot</groupId>
            <artifactId>mars-validated</artifactId>
            <version>1.0.0</version>
        </dependency> 
2、使用注解
2.1 springboot 配置
@SpringBootApplication
@EnableValidatedConfig(fileName = "valid_zh_CN")
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
} 
2.2 spring配置
@Component
@Configuration
@EnableValidatedConfig(fileName = "valid_zh_CN")
public class Config {
}
 
3、使用 @Validated 开启接口验证 @Email验证邮箱格式
@Controller
public class DemoController {
    @Autowired
    private TestService testService;
    
    @RequestMapping("/emailCheck")
    @ResponseBody
    @Validated //注意此处
    public String demo(@Email String abc,){
        return testService.test(abc);
    }
}   
@Controller
public class DemoController {
    @Autowired
    private TestService testService;
    
    
    @RequestMapping("/idcardCheck")
    @ResponseBody
    @Validated
    public String demo(IdCardModel idCardModel){
        return testService.test("ac");
    }
    
    @RequestMapping("/idcardCheck2")
    @ResponseBody
    public String demo2(IdCardModel idCardModel){
        return testService.test2("ac");
    }
}
**此处支持多继承验证*** 
public class IdCardModel extends BaseModel{
    @IdCard
    private String idCardModel;
    public String getIdCardModel() {
        return idCardModel;
    }
    public void setIdCardModel(String idCardModel) {
        this.idCardModel = idCardModel;
    }
}
@Service
public class TestService{
    @Validated
    public void test2(@IdCard String abc){
    }
}
 
4、自定义实现全局异常处理
拦截 com.fashion.spv.validated.exception.ValidatedException
@RestControllerAdvice
public class GlobalExceptionHandler {
     
    @ExceptionHandler(ValidatedException.class)
    @ResponseStatus(HttpStatus.OK)
    public RespMessage ValidationException(ValidatedException e){
        return new RespMessage(-100,e.getMsg());
    }
}
 
validated 参数验证
使用环境
spring4.0 及以上
 jdk1.8 及以上
| Annotation | Supported data types | 作用 | 
|---|---|---|
| NotBlank | String | 验证String 字符串是否为空 | 
| NotNull | String,Object,Integer,Long,Double,Short,Float,BigDecimal, BigInteger | 验证对象是否为空 | 
| AssertFalse | Boolean,boolean,String | 只能为false | 
| AssertTrue | Boolean,boolean,String | 只能为true | 
| BankCard | String | 验证银行卡 | 
| CreditCard | String | 验证信用卡 | 
| Default | Integer,Double,Long,Short,Float,BigDecimal,String | 设置默认值 | 
| Digits | String | 验证是否是数字 | 
| String | 验证是否是邮箱 | |
| IdCard | String | 验证是否是身份证,验证18岁 | 
| Length | int,long,short,double,Integer,Long,Float,Double,Short,String | 验证长度 | 
| Pattern | String | 正则表达式验证 | 
| Phone | String | 验证手机号是否正确 | 
| Size | int,long,short,Integer,Long,Short | 验证大小值 | 
支持自定义注解 如下:
1、实现  ConstraintValidator 此接口
2、自定义注解如下:  CustomConstraintValidator.class,CustomConstraintValidator2.class 实现类可多个,至少有一个
    @Documented
    @Target({ElementType.FIELD,  ElementType.PARAMETER})
    @Retention(RetentionPolicy.RUNTIME)
    @Constraint(validatedBy = {CustomConstraintValidator.class,CustomConstraintValidator2.class})
    public @interface Custom {
    
        String msg() default "com.spv.valid.Custom.msg";
    
        int min();
    }
3、代码实现
public class CustomConstraintValidator implements ConstraintValidator<Custom,String> {
    @Override
    public boolean isValid(Custom custom,String var1) {
        /**
         * 自定义方法
         */
        int min=custom.min();
        /**
         * value
         */
        System.out.println(var1);
        /**
         * return true 则验证成功 false 验证失败
          */
        return true;
    }
}评论
