SpringCloud通過(guò)Feign傳遞List類型參數(shù)方式
通過(guò)Feign傳遞List類型參數(shù)
首先明確一點(diǎn),SpringCloud通過(guò)Fegin如果是多個(gè)參數(shù),其中一個(gè)參數(shù)是List,那么是傳不過(guò)去的,單個(gè)List是可以的。
1、單個(gè)List實(shí)體傳遞
@RequestMapping("/secret/batchInsert") public int batchInsert(@RequestBody List<BatchSecretBO> batchSecretBOList){ ? ? return batchSecretService.batchInsert(batchSecretBOList); }
2、基本類型傳遞
基本類型可以通過(guò)數(shù)組的方式傳遞,代碼如下所示:
@RequestMapping(value = "/stat/merchant/get_merchant_compare_info", method = RequestMethod.POST) @ResponseBody MerchantCompareTotalInfo getMerchantCompareInfo(@RequestParam("licenseNoList") String[] licenseNoList);
3、實(shí)體類型傳遞
實(shí)體類型可以通過(guò)FastJson將List轉(zhuǎn)換為String之后進(jìn)行傳遞,代碼如下:
//調(diào)用方代碼 String contracts = JSONObject.toJSONString(contractBOList); contractDao.contractBatchSetRedis(contracts , 60 * 60); ? //接收方代碼 @PostMapping("/contract/contractBatchSetRedis") void contractBatchSetRedis(@RequestParam("contractBOList") String contractBOList, @RequestParam("expire") long expire) { ? ? List<ContractBO> contracts = JSONObject.parseArray(contractBOList, ContractBO.class); ? ? if (contracts == null || contracts.size() == 0) { ? ? ? ? ?return; ? ? } ? ? //批量set數(shù)據(jù) ? ? redisUtil.getRedisTemplate().executePipelined((RedisCallback<String>) connection -> { ? ? ? ? for (ContractBO contract : contracts) { ? ? ? ? ? ? connection.setEx((RedisPrefixConst.CONTRACT_PREFIX + contract.getBusinessCode() + RedisPrefixConst.UNDERLINE_SEPARATOR + contract.getContractNo()).getBytes(), expire, JSONObject.toJSONString(contract).getBytes()); ? ? ? ? } ? ? ? ? return null; ? ? }); }
fegin局限性較多,如果要傳遞List只能通過(guò)以上方法轉(zhuǎn)換成字符串后,再進(jìn)行參數(shù)傳遞。
Feign在參數(shù)為L(zhǎng)ist時(shí)的坑
我們?cè)谑褂肍eign進(jìn)行服務(wù)接口調(diào)用時(shí),有時(shí)候會(huì)有接口參數(shù)為L(zhǎng)ist集合的時(shí)候,不能使用List接口類作為參數(shù),只能用List的實(shí)現(xiàn)類。
錯(cuò)誤寫法
正確寫法
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
idea編寫yml、yaml文件以及其優(yōu)先級(jí)的使用
本文主要介紹了idea編寫yml、yaml文件以及其優(yōu)先級(jí)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Redis分布式鎖實(shí)現(xiàn)方式及超時(shí)問(wèn)題解決
這篇文章主要介紹了Redis分布式鎖實(shí)現(xiàn)方式及超時(shí)問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04JavaSE實(shí)戰(zhàn)之酒店訂房系統(tǒng)的實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了如何利用JavaSE實(shí)現(xiàn)酒店訂房系統(tǒng),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)JavaSE開(kāi)發(fā)有一定的幫助,需要的可以參考一下2022-07-07Java Web中解決路徑(絕對(duì)路徑與相對(duì)路徑)問(wèn)題
這篇文章主要介紹了Java Web中解決路徑問(wèn)題的相關(guān)資料,java 文件路徑有絕對(duì)路徑與相對(duì)路徑,這里提供了幾種方法解決所有路徑問(wèn)題,需要的朋友可以參考下2017-01-01Java使用IntelliJ IDEA連接MySQL的詳細(xì)教程
這篇文章主要給大家介紹了關(guān)于Java使用IntelliJ IDEA連接MySQL的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04spring如何快速穩(wěn)定解決循環(huán)依賴問(wèn)題
這篇文章主要介紹了spring如何快速穩(wěn)定解決循環(huán)依賴問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03