spring cloud 复杂类型 FeignClient 避免linkedHashMap
项目使用spring cloud后,各种服务被独立开,功能被分开。因此,会开发中我们往往会遇到一些问题,服务间的互相调用需要更为复杂的方式。
调用方式主要有两种
一种是http请求方式,结合常说的restful风格,来传递信息,基于tcp的短暂通讯方式(伪RPC)。
另一种就是基于socket的长连接,底层同样基于tcp的RPC方式调用。
这两种方式,可能RPC效率更高,因为他不用也不需要像http协议那样重复建立连接和释放连接的过程,但是它也有缺点,长期占用连接资源,在没有调用时依然建立连接。而现在应用最广泛的就是第一种方式,而应用主要就是FeignClient。废话不多说。
FeignClient在服务间相互调用时,会出现需要传递复杂对象的情况(对象中包含其他对象,又包含数组等),这时,返回值会无法直接解析,而是被java默认转换成了linkedHashMap,这种复杂对象为了安全起见,自动转换成了一种map是很正常的,但是这并不方便我们的使用。而我们想直接传递原对象最好的方式就是带上---泛型。
见代码:
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;/*** @ClassName ReturnData* @Description 返回数据实体* @Author TY* @Date 09:55$ 2019-03-18$* @Version 1.0**/
public class ReturnResult<T> {private int retCode;/*** 对retCode的说明*/private String retMsg;/*** 返回数据,单个数据可以直接放入,多个数据建议使用map或其他实体类*/private Object retData;/*** 存放数据对象*/@JsonInclude(Include.NON_NULL)private T t;public ReturnResult() {}public ReturnResult(int retCode, String retMsg, Object retData) {this.retCode = retCode;this.retMsg = retMsg;this.retData = retData;}public int getRetCode() {return retCode;}public void setRetCode(int retCode) {this.retCode = retCode;}public String getRetMsg() {return retMsg;}public void setRetMsg(String retMsg) {this.retMsg = retMsg;}public Object getRetData() {return retData;}public void setRetData(Object retData) {this.retData = retData;}/*** 获取数据对象** @return T*/public T getT() {return t;}/*** 设置数据对象** @param t t*/public void setT(T t) {this.t = t;}
}
这里的代码仅仅是为了demo,让大家更好的理解,使用的时候可以加以略微调整。
spring cloud 复杂类型 FeignClient 避免linkedHashMap相关推荐
- Spring Cloud 中的@FeignClient注解
@FeignClient:属于Spring Cloud技术架构体系中的一个注解,其作用是可以让当前服务调用其它应用服务的接口,相比于RestTemplate使用起来更加灵活. 在使用@FeignCli ...
- Spring Cloud 中的@FeignClient注解中的contextId属性
在使用@FeignClient注解前,我们需要先引入其相关依赖,版本为3.0.1 <dependency><groupId>org.springframework.cloud& ...
- Spring Cloud Netflix中文文档翻译笔记
原文地址:http://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/1.2.2.RELEASE/ Spring Cloud Net ...
- 异常解决——Spring Cloud FeignClient: BeanCreationException: Error creating bean with
最近自己搭建了Spring Cloud 架构,在做客户端的时候,FeignClient标注的Service接口 无法注入,can not be autowired . 网上找了一堆资料也没发现可用的. ...
- Spring Cloud —— RocketMQ 的消息类型
导航 引言 一.普通消息 1.1 可靠同步发送 1.2 可靠异步发送 1.3 单向发送 二.顺序消息 三.事务消息 3.1 什么是事务消息 3.2 事务消息示例 1.编写本地事务逻辑 2.发送半事务消 ...
- Spring cloud实现FeignClient指定Zone调用
本文基于Spring Cloud Fincheley SR3 背景介绍 目前项目多个区域多个集群,这些集群共用同一个Eureka集群.通过设置eureka.instance.metadata-map. ...
- 【方向盘】Spring Cloud 2021.0.0正式发布,FeignClient调用结果可一键缓存
盛年不重来,一日难再晨. 本文已被https://yourbatman.cn收录:女娲Knife-Initializr工程可公开访问啦:程序员专用网盘https://wangpan.yourbatma ...
- @FeignClient使用详解 name, url,decode404, value,fallbackFactory等。spring cloud 远程接口实现全流程。
@FeignClient标签的常用属性如下: name:指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现 value:指定FeignClien ...
- Spring Cloud Feign使用详解
通过前面两章对Spring Cloud Ribbon和Spring Cloud Hystrix的介绍,我们已经掌握了开发微服务应用时,两个重要武器,学会了如何在微服务架构中实现客户端负载均衡的服务调 ...
最新文章
- android 网络加载图片点击大图后 浏览 可 缩放,Android 网络加载图片点击大图后 浏览 可 缩放...
- LeetCode Longest Increasing Subsequence(动态规划、二分法)
- oracle的39082,ORA-39082 导入数据遇到的问题
- getBoundingClientRect的用法
- 前端 chrome查看html样式基本操作
- word List 05
- Leetcode--279. 完全平方数
- ThinkPHP6项目基操(2.Nginx配置虚拟域名及简化访问路径)
- 算法导论第八章__实现计数排序
- Tarjan算法查找强联通组件的程序
- 阿里云MaxCompute中pyODPS的使用:多线程上传、下载、分区
- 如何让gitbook与github仓库关联
- Android:应用宝省流量更新
- android关于16进制转字符串的问题
- premiere pro 2020 pr 快捷键
- 1月份中国综合PMI指数为53.2% 企业生产经营活动总体增速加快
- xp系统蓝屏代码7b_电脑开机蓝屏错误代码0x0000007B的详细解决过程
- stm8s001 - SWIM复用为ADC输入 ADC电压值不准确?
- 数据挖掘——了解数据
- SF超高速FTP搜索引擎(哈尔滨工业大学)
热门文章
- DevOps企业实践指南(1):DevOps能为我们带来什么
- shell教程(2):积木游戏之认识积木--重要的系统命令
- JS 实现网页截屏五种方法
- 后门准则(Backdoor Criterion)与前门准则(Frontdoor Criterion)
- 一个快速搭建微商城的方法
- background图片叠加_css在图片上叠加层(其他图标)
- iOS13 iPadOS 获取UserAgent的问题
- 不要迷恋哥,哥不只是传说(再【转】世界上最牛的程序员)
- 服务器Ping值代表着什么?
- Jmeter打开badboy录制的脚本报类元素错误解决方法