SpringCloud特殊问题处理1——通过Feign传递List类型参数

在微服务项目的开发过程中,远程数据接口调用是必需的操作。其中绝大部分的接口写法和用法与api相似,但是对于List<Obj>这种对象的参数使用需要异常关注。

1.List<Obj>对象集合参数传递

注意:

  • Feign接口不能直接使用List<Obj>传参,需要通过json转成字符串
  • 如果是List<单属性>,如List<String>则无需转化,按api接口规范直接传递即可。
  • 另外需要注意对参数大小的限制
feign客户端
    /*** 批量新增来自外部通知提醒数据* 1.Feign接口不能直接使用List<Obj>传参,需要通过json转成字符串* 2.另外需要注意对参数大小的限制* @param dtoStr*/@PostMapping(value = "/batchAddNotice")void batchAddNoticeData(@RequestParam("dtoList") String dtoStr);
服务提供方
    /*** 批量新增来自外部调用的通知数据* @param dtoStr*/@PostMapping(value = "/batchAddNotice")public void batchAddNoticeData(@RequestParam("dtoList") String dtoStr) {List<NoticeDTO> dtoList = JSONArray.parseArray(dtoStr.trim(), NoticeDTO.class);noticeService.batchAddNoticeData(dtoList);}
服务调用方
/**
* 仅展示部分关键代码
* List<Obj>须通过FastJson将其转换为String之后再进行传递
**/
if(CollectionUtils.isNotEmpty(noticeDTOList)){remoteNoticeService.batchAddNoticeData(JSONObject.toJSONString(noticeDTOList,SerializerFeature.DisableCircularReferenceDetect));}

2.其他参数传递

  • POST:单个Obj对象传递,使用@RequestBody注解
    //feign客户端@PostMapping("/test/updateNoticeInfo")void dynamicUpdateNoticeInfo(@RequestBody NoticeDTO noticeDTO);//服务提供方@PostMapping(value = "/batchAddNotice")public void batchAddNoticeData(@RequestParam("dtoList") String dtoStr) {List<NoticeDTO> dtoList = JSONArray.parseArray(dtoStr.trim(), NoticeDTO.class);noticeService.batchAddNoticeData(dtoList);}
  • GET:单个Obj对象传递,使用@SpringQueryMap注解

注意:

  • 该注解是Spring Cloud OpenFeign提供的,也可以用于feign客户端,OpenFeign提供的QueryMap注解与Spring不兼容
  • 该注解用于将POJO或Map参数注释为查询参数映射,与Spring类似。
    //feign客户端@GetMapping("/test/getNoticeList")R<List<NoticeDTO>> dynamicGetNoticeList(@SpringQueryMap NoticeDTO dto);//服务提供放端@GetMapping("/selectNoticeList")public R<List<NoticeDTO>> dynamicSelectNoticeList(NoticeDTOdto) {return R.ok(noticeService.dynamicSelectNoticeList(dto));}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/5021.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Unity 内置简易模型和材质】

【Unity 内置简易模型和材质】 内置模型 Primitives&#xff08;基本几何体&#xff09;: Unity 提供了一系列基本的3D几何形状&#xff0c;包括&#xff1a; Cube&#xff08;立方体&#xff09; Sphere&#xff08;球体&#xff09; Cylinder&#xff08;圆柱体&#xff0…

分布式与一致性协议之Raft算法(三)

Raft算法 如何复制日志 你可以把Raft算法的日志复制理解成一个优化后的二阶段提交(将二阶段优化成了一阶段)。优化后减少了一半的往返消息&#xff0c;也就是降低了一半的消息延迟&#xff0c;那日志复制的具体过程又是什么呢&#xff1f; 首先&#xff0c;领导者进入第一阶段…

【Redis 开发】多级缓存,本地进程缓存Caffeine

多级缓存 多级缓存本地进程缓存CaffeineCaffeine三种缓存驱逐策略 多级缓存 Redis处理并发的能力是非常强大的&#xff0c;但是tomcat的支持并发的能力跟不上Redis的性能&#xff0c;导致整体性能的下降 Redis缓存失效时&#xff0c;会对数据库产生冲击&#xff0c;之间再无屏…

LeetCode1017题:负二进制转换(原创)

【题目描述】 给你一个整数 n &#xff0c;以二进制字符串的形式返回该整数的 负二进制&#xff08;base -2&#xff09;表示。注意&#xff0c;除非字符串就是 "0"&#xff0c;否则返回的字符串中不能含有前导零。 示例 1&#xff1a; 输入&#xff1a;n 2 输出&…

基于Springboot的数字化农家乐管理平台(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的数字化农家乐管理平台&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系…

踏上R语言之旅:解锁数据世界的神秘密码(四)

文章目录 前言一、多元线性回归1.多元线性回归模型的建立2.多元线性回归模型的检验 二、多元线性相关分析1.矩阵相关分析2.复相关分析 三、回归变量的选择方法1.变量选择准则2.变量选择的常用准则3.逐步回归分析 总结 前言 回归分析研究的主要对象是客观事物变量间的统计关系。…

选择内核注意力 SK | Selective Kernel Networks

论文名称&#xff1a;《Selective Kernel Networks》 论文地址&#xff1a;https://arxiv.org/pdf/1903.06586.pdf 代码地址&#xff1a;https://github.com/implus/SKNet 在标准的卷积神经网络中&#xff0c;每层人工神经元的感受野被设计为具有相同的大小。神经科学界已经广…

使用OkHttp 缓存 API 调用提高Android应用性能

使用OkHttp 缓存 API 调用提高Android应用性能 坦率地说&#xff0c;我们都遇到过这样的情况——焦急地刷新应用&#xff0c;看着加载图标不停地旋转&#xff0c;等待那个至关重要的 API 响应。这样的等待我们已经是炉火纯青了&#xff0c;是吧&#xff1f;手指有节奏地轻敲屏…

《R语言与农业数据统计分析及建模》——多重共线性和逐步回归

一、多重共线性 多重共线性&#xff1a;在多元线性回归时&#xff0c;多个自变量之间存在高度相关关系&#xff0c;时模型估计失真或难以估计准确的情况。 一般地&#xff0c;多元线性回归中自变量间应尽量相互独立。常规模型诊断方法难以检测多重共线性。 1、案例解释 作物产…

ActiveMQ 反序列化漏洞 (CVE-2015-5254)

一、漏洞描述 Apache ActiveMQ 是由美国阿帕奇&#xff08;Apache&#xff09;软件基金会开发的开源消息中间件&#xff0c;支持 Java 消息服务、集群、Spring 框架等。属于消息队列组件(消息队列组件&#xff1a;分布式系统中的重要组件&#xff0c;主要解决应用耦合、异步消息…

MySQL个人复习总结

最近想把MySQL的知识点再过一遍,带着自己的理解使用简短的话把一些问题总结一下,尤其是开发中和面试中的高频问题,基础知识点可以参考之前写的如下几篇博客,这篇不再赘述,阅读顺序由浅入深依次递进。 一、MySQL 概述 数据库&表操作 数据增删改; 二、MySQL 单表查询 …

VUE3与Uniapp 五 (v-if、v-show和template、v-for的使用)

<template><!-- v-if如果是false&#xff0c;则不会出现在DOM中&#xff0c;不会被渲染&#xff1b;v-show如果为false&#xff0c;则会出现在DOM中&#xff0c;并加载资源&#xff08;如图片&#xff09;&#xff0c;只是CSS隐藏了。 --><view v-if"day1&…

【Vue】Pdf转图片功能+多张图片拼接封装

Pdf转图片功能多张图片拼接封装 HTML页面tools.js文件 HTML页面 <template><div class"main-marge"><div class"box"><van-uploader accept"image/*,.pdf" :before-read"(file) > beforeRead(file, -1)">…

数据库|TiDB-Server API的高效应用指南

一、API介绍 1.Status 显示TiDB 连接数、版本和git_hash 信息 tidb-server_ip:status_port/status { "connections": 0, "version": "5.7.25-TiDB-v6.1.1", "git_hash": "5263a0abda61f102122735049fd0dfadc7b7f822" } 2.St…

mysql-sql-练习题-4-标记

标记 连续登录2-7天用户建表排名找规律 最大连胜次数建表只输出连胜结果输出所有连续结果 连续登录2-7天用户 建表 create table continuous_login(user_id1 integer comment 用户id,date_login date comment 登陆日期 ) comment 用户登录表;insert into continuous_login val…

LT2611UX四端口 LVDS转 HDMI2.0,带音频

描述LT2611UX 是一款面向机顶盒、DVD 应用的高性能 LVDS 至 HDMI2.0 转换器。LVDS输入可配置为单端口、双端口或四端口&#xff0c;具有1个高速时钟通道和3~4个高速数据通道&#xff0c;工作速率最高为1.2Gbps/通道&#xff0c;可支持高达19.2Gbps的总带宽。LT2611UX 支持灵活的…

002 springCloudAlibaba Sentinel流控-关联

当与A关联的资源B达到阀值后&#xff0c;就限流A自己 文章目录 FlowLimitController.javaSentinelServerApplication.javaServletInitializer.javaapplication.yamlpom.xmlpom.xml 启动Sentinel8080 - java -jar sentinel-dashboard-1.7.0.jar 启动微服务8401 启动8401微服务…

一款非常不错的音频录制播放Python库

声音无处不在&#xff0c;在计算机应用中也是。Python拥有丰富的库来处理声音&#xff0c;sounddevice就是其中一个非常实用的库。本文将介绍sounddevice库的特点、工作原理以及使用方式&#xff0c;帮助你大家理解和运用这个库。 简介 sounddevice是一个Python库&#xff0c…

72、栈-每日温度

思路&#xff1a; 第一种方法&#xff0c;双循环&#xff0c;第一层循环拿出一个元素&#xff0c;第二层循环寻找最近比当前大的元素位置。 第二种方法&#xff1a;使用栈来实现。 初始化&#xff1a; int[] ans 用来存储每一天之后多少天温度会升高。Stack<Integer> 用…

软件重构的要点及注意事项

重构是软件开发过程中改进现有代码结构和设计而不改变其外在行为的过程。良好的重构实践可以提高代码质量、可读性、可维护性&#xff0c;并促进后续的开发工作。以下是重构的基本步骤、要点及注意事项&#xff1a; 重构的基本步骤 明确重构目的&#xff1a;确定重构的动机&a…