小编给大家分享一下SpringCloud如何通过Feign传递List类型参数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
首先明确一点,SpringCloud通过Fegin如果是多个参数,其中一个参数是List,那么是传不过去的,单个List是可以的。
@RequestMapping("/secret/batchInsert") public int batchInsert(@RequestBody List<BatchSecretBO> batchSecretBOList){ return batchSecretService.batchInsert(batchSecretBOList); }
基本类型可以通过数组的方式传递,代码如下所示:
@RequestMapping(value = "/stat/merchant/get_merchant_compare_info", method = RequestMethod.POST) @ResponseBody MerchantCompareTotalInfo getMerchantCompareInfo(@RequestParam("licenseNoList") String[] licenseNoList);
实体类型可以通过FastJson将List转换为String之后进行传递,代码如下:
//调用方代码 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数据 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只能通过以上方法转换成字符串后,再进行参数传递。
我们在使用Feign进行服务接口调用时,有时候会有接口参数为List集合的时候,不能使用List接口类作为参数,只能用List的实现类。
以上是“SpringCloud如何通过Feign传递List类型参数”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。