mars-validated

基于 spring 的参数校验框架
授权协议 Apache
开发语言 Java
所属分类 程序开发、 其他开发相关
软件类型 开源软件
地区 国产
投 递 者 巩俊远
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

mars-validated springmvc springboot springcloud dubbo 参数校验

简单好用的 springmvc springboot springcloud dubbo 参数校验 此框架基于 spring 开发。

使用4步配置

1、导入jar

<dependency>
            <groupId>com.github.fashionbrot</groupId>
            <artifactId>mars-validated</artifactId>
            <version>1.0.0</version>
        </dependency>

2、使用注解

2.1 springboot 配置

fileName 如果不填默认jar 包自带提示,如果需要批量自定义请按照jar 包下的valid_zh_CN.properties 修改提示语内容

@SpringBootApplication
@EnableValidatedConfig(fileName = "test")    // fileName 默认中文jar包自带 如需要批量自定义请自己创建 test.properties  放在自己项目中的resources 下
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 自定义实现全局异常处理

拦截 ValidatedException

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(ValidatedException.class)
    @ResponseStatus(HttpStatus.OK)
    public RespMessage ValidationException(ValidatedException e){

        return new RespMessage(-100,e.getMsg());
    }
}

支持 默认值设置 hibernate默认不支持

import com.github.fashionbrot.validated.annotation.Default;

@Data
public class BaseModel {

    @Default("1")
    private Integer pageNo;

    @Default("20")
    private Integer pageSize;
}

支持 dubbo 接口、实现类上方法上添加 @Validated ,设置 dubbo DubboProviderFilter 拦截器做统一处理

public class DubboProviderFilter implements Filter {

    @Override
    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
        Result result =  invoker.invoke(invocation);
        if(result.hasException() && result.getException() instanceof ValidationException){
            throw new CustomException(result.getException()); //自定义异常,全局拦截控制,或抛出 RpcException 自行拦截
        }
        return result;
    }
}

validated 参数验证

使用环境

spring4.0 及以上
jdk1.8 及以上

Annotation Supported data types 作用
NotBlank String 验证String 字符串是否为空
NotNull String,Object,Integer,Long,Double,Short,Float,BigDecimal, BigInteger 验证对象是否为空
NotEmpty String 验证字符串不能为空
AssertFalse Boolean,boolean,String 只能为false
AssertTrue Boolean,boolean,String 只能为true
BankCard String 验证银行卡
CreditCard String 验证信用卡
Default Integer,Double,Long,Short,Float,BigDecimal,String 设置默认值
Digits String 验证是否是数字
Email 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 验证大小值
NotEqualSize String 验证长度


### 支持自定义注解 如下:

```bash
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;
    }
}

6、可通过 test项目中的 https://github.com/fashionbrot/mars-validated/tree/master/test/springboot-test 参考使用demo

7、如有问题请通过 https://github.com/fashionbrot/mars-validated/issues 提出 告诉我们。我们非常认真地对待错误和缺陷,在产品面前没有不重要的问题。不过在创建错误报告之前,请检查是否存在报告相同问题的issues。

  • Susan and Jim had been married nine years. Like most couples they started out loving each other, but after years of increasing frustration and disappointment they lost their passion and decided to giv

 相关资料
  • 主要内容:date validator:,double validator:,email validator:,expression validator:,int validator:,regex validator:,required validator:,requiredstring validator:,stringlength validator:,url validator:以下是的各类字段级和非字段级验证在Struts2列表: date validator: double valid

  • 业务参数校验采用JSR-303方式,关于JSR-303介绍可以参考这篇博文:JSR 303 - Bean Validation 介绍及最佳实践 在参数中使用注解即可,框架会自动进行验证。如下面一个添加商品接口,它的参数是GoodsParam @Api(name = "goods.add") public void addGoods(GoodsParam param) { ... } 在G

  • 业务参数校验采用JSR-303方式,关于JSR-303介绍可以参考这篇博文:JSR 303 - Bean Validation 介绍及最佳实践 在参数中使用注解即可,框架会自动进行验证。如下面一个添加商品接口,它的参数是GoodsParam @Open("goods.add") @RequestMapping("/goods/add") public void addGoods(GoodsPara

  • liquibase变更集校验和的生成是否考虑了主机名或其他问题? 我有一个问题是我在部署服务器上的特定数据库上运行了liquibase。但是,当我从本地机器(对同一个数据库)重新运行同一组changelogs时,liquibase试图重新执行变更集,因此抛出诸如“Table已经存在”之类的错误,而实际上我希望它检测到它们已经运行并跳到新的变更集。 谢了。

  • 本文向大家介绍springboot使用校验框架validation校验的示例,包括了springboot使用校验框架validation校验的示例的使用技巧和注意事项,需要的朋友参考一下 b/s系统中对http请求数据的校验多数在客户端进行,这也是出于简单及用户体验性上考虑,但是在一些安全性要求高的系统中服务端校验是不可缺少的。 Spring3支持JSR-303验证框架,JSR-303 是Java