Java淺拷貝BeanUtils.copyProperties引發(fā)的RPC異常
Tech
近期參與了一個(gè)攻堅(jiān)項(xiàng)目,前期因?yàn)槠渌鞒淘?,測(cè)試時(shí)間已經(jīng)耽擱了好幾天了,本以為已經(jīng)解決了卡點(diǎn),后續(xù)流程應(yīng)該順順利利的,沒想到 人在地鐵上,bug從咚咚來~
排查過程
1、作為資深寫bug的老司機(jī),第一感覺是傳參的報(bào)文格式有問題了,可以通過模擬報(bào)文排查。于是乎,在群里圈了服務(wù)提供方同學(xué)B看下,BG快速的用測(cè)試工具+本地debug的方式,驗(yàn)證了下報(bào)文格式,發(fā)現(xiàn)居然都調(diào)用成功了。。。
private List<CargoInfo> convertToCargoInfo(OutboundEventCallbackRequest outboundEventCallbackRequest) {return outboundEventCallbackRequest.getCargos().stream().map(item -> {CargoInfo cargoInfo = new CargoInfo();BeanUtils.copyProperties(item, cargoInfo);return cargoInfo;}).collect(Collectors.toList());}
PS:客戶端&服務(wù)端類關(guān)系

直觀圖如下:

以上,初步定位原因,解決方式也就清晰了。
去掉BeanUtils.copyProperties,進(jìn)行手動(dòng)賦值。最終解決了這個(gè)問題。
后續(xù)反思
1、想起王東岳老師的那句話,越原始的越穩(wěn)定~
2、如果這種轉(zhuǎn)換比較多,建議使用MapStruct


評(píng)論
圖片
表情
