当前位置: 代码网 > it编程>编程语言>Java > Dubbo RPC接口的参数校验过程

Dubbo RPC接口的参数校验过程

2025年10月20日 Java 我要评论
dubbo rpc接口的参数校验服务a调用服务b时,调用时即对服务b的接口参数进行校验 ,无需进入到服务b重点就是添加 validation = "true"1、pom文件<

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校验标准

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com