dubbo rpc接口的参数校验
服务a调用服务b时,调用时即对服务b的接口参数进行校验 ,无需进入到服务b
重点就是添加 validation = "true"
1、pom文件
<dependency>
<groupid>javax.validation</groupid>
<artifactid>validation-api</artifactid>
<version>1.1.0.final</version>
</dependency>
<dependency>
<groupid>org.hibernate</groupid>
<artifactid>hibernate-validator</artifactid>
<version>5.0.1.final</version>
</dependency>2、dubbo xml配置
或者config类修改 或者@reference时添加
在客户端验证参数
<dubbo:reference id="validationservice" interface="com.alibaba.dubbo.examples.validation.api.validationservice" validation="true" />
在服务器端验证参数
<dubbo:service interface="com.alibaba.dubbo.examples.validation.api.validationservice" validation="true" />
config类
@bean
public referencebean<plrepaymentplanservice> repaymentplanservicereferencebean(){
referencebean<plrepaymentplanservice> referencebean = new referencebean<>();
referencebean.setinterface(plrepaymentplanservice.class);
referencebean.setcheck(false);
referencebean.setvalidation("true");
return referencebean;
}@reference
@reference(validation = "true") testservice testservice;
3、服务b的接口
integer createrepaymentplan(@valid repaymentplanrequestdto dto,@notnull integer age) throws postloanexception;
dto 内容
@data
public class repaymentplanrequestdto implements serializable {
/**
* 业务源
**/
@notnull
private integer businesssource;
/**
* 业务类型0,消费贷; 1,现金贷; 2,租房; 3:payday;4:无预约现金贷 5有钱贷,6指尖贷,7多享贷,8租机,9白条,10医美,11前置扣款
**/
@notnull
private integer type;
/**
* 业务规则
*/
private string businessrule;
/**
* 订单id
**/
@notnull
private integer orderid;
/**
* 期数
**/
@notnull
private integer period;
/**
* 应还总额
**/
@notnull
private bigdecimal total;
/**
* 每期应还
**/
@notnull
private bigdecimal every;
/**
* 本金
**/
@notnull
private bigdecimal principal;
/**
* 每期利率
**/
@notnull
private bigdecimal rateevery;
/**
* 服务费
**/
private bigdecimal servicefee;
/**
* 用户id
**/
@notnull
private integer userinfoid;
/**
* 商品id
**/
private integer goodsid;
/**
* 渠道id
**/
private integer channelid;
/**
* 资方id
**/
private integer capitalid;
/**
* 起息日
*/
private localdatetime startinterestdate;
/**
* 贷款天数
**/
private integer paydays;
/**
* 提单编号(规则o2o+订单编号+资方+重试次数)
*/
private string channelorderno;
/**
* 是否通知
* 需要资方生成还款计划后资方平台通知/回调的订单
*/
private boolean hasnotified;
/**
* 订单四要素
*/
@valid
private pluserinfodto pluserinfodto;
}可以嵌套校验 但需要在嵌套校验的字段上加@valid
实现类上需要加@validated
启动服务b,服务a调用接口,符合添加的valid校验标准
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论