Dubbo RPC接口的參數(shù)校驗過程
Dubbo RPC接口的參數(shù)校驗
服務(wù)A調(diào)用服務(wù)B時,調(diào)用時即對服務(wù)B的接口參數(shù)進(jìn)行校驗 ,無需進(jìn)入到服務(wù)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時添加
在客戶端驗證參數(shù)
<dubbo:reference id="validationService" interface="com.alibaba.dubbo.examples.validation.api.ValidationService" validation="true" />
在服務(wù)器端驗證參數(shù)
<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、服務(wù)B的接口
Integer createRepaymentPlan(@Valid RepaymentPlanRequestDTO dto,@NotNull Integer age) throws PostLoanException;
DTO 內(nèi)容
@Data
public class RepaymentPlanRequestDTO implements Serializable {
/**
* 業(yè)務(wù)源
**/
@NotNull
private Integer businessSource;
/**
* 業(yè)務(wù)類型0,消費貸; 1,現(xiàn)金貸; 2,租房; 3:payday;4:無預(yù)約現(xiàn)金貸 5有錢貸,6指尖貸,7多享貸,8租機,9白條,10醫(yī)美,11前置扣款
**/
@NotNull
private Integer type;
/**
* 業(yè)務(wù)規(guī)則
*/
private String businessRule;
/**
* 訂單id
**/
@NotNull
private Integer orderId;
/**
* 期數(shù)
**/
@NotNull
private Integer period;
/**
* 應(yīng)還總額
**/
@NotNull
private BigDecimal total;
/**
* 每期應(yīng)還
**/
@NotNull
private BigDecimal every;
/**
* 本金
**/
@NotNull
private BigDecimal principal;
/**
* 每期利率
**/
@NotNull
private BigDecimal rateEvery;
/**
* 服務(wù)費
**/
private BigDecimal serviceFee;
/**
* 用戶id
**/
@NotNull
private Integer userinfoId;
/**
* 商品id
**/
private Integer goodsId;
/**
* 渠道id
**/
private Integer channelId;
/**
* 資方id
**/
private Integer capitalId;
/**
* 起息日
*/
private LocalDateTime startInterestDate;
/**
* 貸款天數(shù)
**/
private Integer payDays;
/**
* 提單編號(規(guī)則O2O+訂單編號+資方+重試次數(shù))
*/
private String channelOrderNO;
/**
* 是否通知
* 需要資方生成還款計劃后資方平臺通知/回調(diào)的訂單
*/
private boolean hasNotified;
/**
* 訂單四要素
*/
@Valid
private PLUserInfoDTO plUserInfoDTO;
}可以嵌套校驗 但需要在嵌套校驗的字段上加@Valid
實現(xiàn)類上需要加@Validated
啟動服務(wù)B,服務(wù)A調(diào)用接口,符合添加的valid校驗標(biāo)準(zhǔn)
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot實現(xiàn)郵件發(fā)送的示例代碼
電子郵件是—種用電子手段提供信息交換的通信方式,是互聯(lián)網(wǎng)應(yīng)用最廣的服務(wù)。本文詳細(xì)為大家介紹了SpringBoot實現(xiàn)發(fā)送電子郵件功能的示例代碼,需要的可以參考一下2022-04-04
java?Comparable和Comparator的區(qū)別及作用面試精講
這篇文章主要為大家介紹了java?Comparable和Comparator的區(qū)別及作用面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
Spring與Mybatis整合方式(mybatis-spring整合jar包功能)
這篇文章主要介紹了Spring與Mybatis整合方式(mybatis-spring整合jar包功能),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-05-05
Java請求調(diào)用參數(shù)格式為form-data類型的接口代碼示例
這篇文章主要給大家介紹了關(guān)于Java請求調(diào)用參數(shù)格式為form-data類型的接口的相關(guān)資料,文中給出了詳細(xì)的代碼示例,對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08

