SpringCloud 学习笔记六 使用RestTemplate实现服务之间通信

SpringCloud系列:微服务间如何通信 使用resttemplate对象进行服务调用其实很简单,就是使用resttemplate提供的getForXX的方法,然后接受返回的对象即可 阅读详情

前面我们已经搭建好了User和Order模块,这里我们来简单实现他们之间的服务通信。再User模块新建一个Web.controller的包。写一个controller类,返回一个User对象,所以我们这里需要一个User对象,这里对象能够被所有的子模块都能获取到。哪个模块需要的时候我们就引入依赖就可以了。
so 先新建一个子模块,不需要引任何的依赖。里面只需要一个domain,写一个User实体类

public class User {
    private Long id; 
    private String username;
    private String password;
    private String intro;


    public User() {
    }

    public User(Long id, String username, String password, String intro) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.intro = intro;
    }
    
    

    public String getIntro() {
        return intro;
    }

    public void setIntro(String intro) {
        this.intro = intro;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
    
}

在user-server模块和order-server引入 user,当然该jar也可以在父模块管理起来

	 	<dependency>
            <groupId>cn.wly</groupId>
            <artifactId>springcloud-user-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

创建UserController;返回一个Json格式的User对象,

@RestController //该注解等同于@Controller和@ResponseBody
public class UserController {

    @GetMapping("/user/{id}")
    public User getUserById(@PathVariable("id") Long id){
        return new User(1L,"java","123456","测试");
    }
}

源码:
在这里插入图片描述
重启Userserver,在浏览器访问;http://peer1:1020/user/1,拿到结果
在这里插入图片描述
需求
这里是使用user访问,接下来我们要使用order访问user拿到User对象
浏览器 -> order服务 -> user服务
那么怎么实现服务之间的通信呢,我们先来了解一下:
原理图
springcloud使用的Restful风格,这里订单服务通过RestTemplate向用户服务发起调用,目的是要获取到用户服务返回的User对象,最终是需要浏览器获取到User。
订单服务需要从用户服务获取到User对象,而浏览器需要访问订单服务获取到User对象,所以订单服务也需要编写Controller接口供浏览器来调用。

RestTemplate介绍
微服务的通信协议主流的有RPC,Http,SpringCloud是基于Http Restful 风格 ,在Java中发起一个Http请求的方式很多,比如 Apache的HttpClient , OKHttp等等 。Spring为我们封装了一个基于Restful的使用非常简单的Http客户端工具 RestTemplate ,我们就用它来实订单服务和用户服务的通信。需要注意的是,RestTmplate本身不具备服务发现和负载均衡器的功能,我们这里的案例只是演示在订单服务中使用RestTemplate基于ip和端口的方式向用户服务发起调用,即:不走注册中心,不使用服务发现方式。

实现
我们既然要使用RestTemplate发请求,那么就要先拿到它,所以在主配置类用bean的方式来创建一个RestTemplate;交给spring容器管理,在controller里面就可以自动注入一个来使用:

 @Bean
    public RestTemplate template(){
        return new RestTemplate();
    }

在controller注入,然后使用它发请求,代码如下:

@RestController
public class OrderController {
    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping(value = "/order/{id}",method = RequestMethod.GET)
    public User getUserById(@PathVariable("id") Long id) {
        String url = "http://localhost:1020/user/" + id;
        return restTemplate.getForObject(url, User.class);
    }
}

重启order服务,然后浏览器访问 peer1:1030/order/1
在这里插入图片描述
拿到结果,说明服务之间通信成功。

SpringCloud实战【九】: SpringCloud服务间调用 1 服务间调用 微服务的特点是服务数量特别多,服务和服务之间也需要有交互,这就涉及到服务间的调用,即服务与服务之间如何通信。提到服务与服务之间的通信,最通用的莫过于HttpClient,在其它的通信架构中基本都使用HttpClient来作为底层的通讯模型。在SpringCloud中依然可以使用HttpClient进行服务与服务调用,只不过如果采用HttpClient调用的话,会有一些弊端,例如: 如果同一个服务有多个负载的话,采用HttpClient调用时,没有办法处理负载均衡的问题。还有... 阅读详情

相关推荐

32.微服务之间的调用方式RestTemplate和FeignClient

SpringCloud服务间的调用有两种方式:RestTemplate和FeignClient。不管是什么方式,他都是通过REST接口调用服务的http接口,参数和结果默认都是通过jackson序列化和反序列化。因为Spring MVC的RestController定义的接口,返回的数据都是通过Jackson序列化成JSON数据。一、RestTemplate使用这种方式,只需要定义一个RestTe...

郑学炜的技术博客 1万+

Java RestTemplate post请求传递参数遇到的坑(后端表单方式接收参数)

最近使用Spring 的 RestTemplate 工具类请求接口的时候发现参数传递的一个坑,也就是当我们把参数封装在Map里面的时候,Map 的类型选择。 使用RestTemplate post请求的时候主要可以通过三种方式实现 1、调用postForObject方法 2、使用postForEntity方法 3、调用exchange方法 postForObject和...

记录点滴 11万+

【微服务-Ribbon】如何通过代码方式实现Ribbon+RestTemplate的服务通信

前面我们了解了负载均衡的作用以及负载均衡的一些负载策略,这篇我们来看一下,在微服务(SpringCloud)架构中,如何来实现服务间的高可用通信。我们先来了解下,RestTemplate 对象是Spring Cloud 封装的 RESTful 通信对象,它封装了基于 HTTP 协议的操作,通过简单的API便可发起 HTTP 请求并自动处理响应。,两者配合可以极大简化服务间通信过程。。下面我们来看一下两种开发模式的具体代码实现。

我爱娃哈哈的专栏 1072

SpringCloud 极简入门 | 第三篇:RestTemplate服务通信

微服务的通信协议主流的有RPC,Http,SpringCloud是基于Http Restful 风格 ,在Java中发起一个Http请求的方式很多,比如 Apache的HttpClient , OKHttp等等。Spring为我们封装了一个基于Restful的使用非常简单的Http客户端工具 RestTemplate ,我们就用它来实订单服务和用户服务的通信。

Kadfg的博客 165

springcloud使用restTemplate进行服务调用

在springcloud的体系中,微服务之间的互相调用是其中比较重要的模块之一,也是微服务的rpc主要核心板块,我们熟知的用于微服务互相调用的组件像ribbon和feign便是其中之一,但在谈到这两个组件之前,我想先使用一下restTemplate,即springboot的web模块提供的一款内置的http通信组件, 接着之前的demo,我们再创建一个微服务的模块,作为consumer端,使用re...

congge 2450

异步FIFO的隐形陷阱:复位信号同步化实战解析

本文深入解析异步FIFO设计中复位信号同步化的隐形陷阱,重点分析赛灵思xpm_fifo_async原语在FPGA应用中的常见问题。通过实战代码和系统集成方案,提供复位同步化的最佳实践,帮助工程师避免跨时钟域通信故障,提升系统可靠性。

keras9composer的博客 244

SpringCloud微服务--使用使用restTemplate实现服务间调用传参

首先先创建工程: 不会的可以点这里. 工程目录如下: 以下的案例模拟了在需要请求多个请求的参数问题,重点的代码都在cslcp-s的controller中,其他的均为基础配置。注释写的很详细,大家可以去仔细阅读一下。 cslcp-eureka pom: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/

ayhg1的博客 970

数据标注的下一代SOP,可能不是Word,而是一段Prompt

再给几个反例:“这个只是正常纹理,不算。真正用于数据生产的Prompt,可能至少包含:任务定义、正例、反例、边界案例、优先级、输出格式、验收逻辑。一个项目100个人,如果100个人对这句话有100种理解,最后返工的就不是一个框,而可能是几十万帧数据。一个项目启动以后,项目经理先研究SOP,培训组长,组长再培训标注员,最后几百个人按照同一套规则干活。实际上一个成熟的项目经理,最重要的能力之一,就是:把客户的业务语言翻译成生产规则。真正让项目难交付的,从来不是80%的普通数据,而是那20%的长尾数据。

AI数据标注猿 295

【SpringCloud】微服务间的通信(一)之RestRestTemplate

通信方式 SpringCloud微服务之间的通信有2种。 RestRestTemplate Feign RestRestTemplate 分为3种: 第一种:直接方式 //1.直接方式 RestTemplate template = new RestTemplate(); //第二个参数为返回值 String msg = temp...

qq_41346335的博客 5291

车载网络测试实操源码_使用CAPL解析VBF文件

VBF(Versatile Binary Format)文件是一种二进制文件格式,被沃尔沃、福特、马自达、吉利等汽车制造商广泛采用。这种格式无法使用我们常规的烧录器进行刷写,通常需要进行解析转化。如果各位需要自己编写软件或脚本来刷写VBF文件,或者需要对刷写功能进行测试时,那么本篇文章就会对你非常有用。今天我们就来讲一下如何使用CAPL脚本对VBF文件进行数据解析。VBF文件包含三部分:VBF版本段、文件头段、数据段。前面的版本段和文件头段是ASCII码,包含版本、地址、校验码等信息

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 2987

【nvidia-B200 生产环境】NVIDIA 570.124.06+Cuda12.8 Ubuntu22.04 nccl-test 一键部署脚本(免修改复制即用)

目录1. 初始化与日志记录2. 安装基础工具与配置更新3. NVIDIA 驱动安装 570.124.064. 安装 Mellanox OFED 24.10-2.1.8.05. 安装 CUDA 12.86. 安装 NCCL 和测试7. 配置 rc.local 和其他优化8. B200 单独步骤9. 最终测试与重启10. 完整生产脚本,复制即可直接使用总结 功能: 设置日志目录和日志文件路径。 使用 命令将标准输出和错误输出同时写入日志文件和终端。 记录脚本开始时间,并计算开始的秒数

jundao1997的专栏 2797

spring之RestTemplate

文章目录一、RestTemplate 语法二、配置类的使用步骤一:编写配置类,将需要new的对象交于spring进行管理步骤二:在任意位置,通过@Resource进行注入创建 RestTemplate一些其他设置1. 拦截器配置2. ErrorHandler 配置3. HttpMessageConverter 配置4.路由配置 RestTemplate是spring的一个rest客户端,在spring-web这个包下,spring boot的依赖如下 <dependency> &lt

Mr.Debug的博客 2026

YOLOv11-seg改进系列 | 引入CMTFNet(TGRS2023)+TransNeXt(CVPR2024)的C3k2_MSMHSA_CGLU模块,多尺度空洞注意力扩大感受野,增强复杂背景下

本文提出一种改进YOLOv11分割模型的C3k2_MSMHSA_CGLU模块,融合多尺度多头自注意力(MSMHSA)和卷积门控线性单元(CGLU)。MSMHSA通过多尺度空洞卷积提取不同感受野特征,生成跨尺度注意力,降低计算量同时保留全局上下文。CGLU采用卷积门控机制增强特征变换能力。实验表明,改进后模型参数量仅增加7.8%,GFLOPs增加4.2%,显著提升了多尺度目标检测性能,尤其适用于遥感图像等复杂场景。该模块有效解决了原始C3k2感受野有限、缺乏全局建模能力的问题。

qq_44224801的博客 200

五.SpringCloud极简入门-使用RestTemplate实现服务通信

老鸟飞过,只做学习使用,欢迎交流 五.使用RestTemplate实现服务通信 1.如何实现服务通信 1.1.需求说明 上一章节我们对Eureka Server做了高可用集群搭建,这一章节我们来实现简单版的服务通信。 目前除了Eureka Server以外我们的微服务有订单服务springcloud-order-server-1030,和用户服务springcloud-user-server-10...

墨家巨子@俏如来 4388

华为OD机试 - 幸运数字(Java 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题。

学Java,找哪吒 3774

大学生作业:80C51存储器数据传输实验:基本指令和数据传送

大学生作业:80C51存储器数据传输实验,报价 200 文章目录实验一、80C51存储器数据传输实验实验目的:实验内容一:基本指令实验内容二:数据传送 实验一、80C51存储器数据传输实验 实验目的: 熟悉软件的集成开发环境 掌握单片机软件设计流程,掌握存储器结构及各窗口之间的联系 掌握内部数据存储器、外部数据存储器的数据传送特点和应用; 实验内容一:基本指令 用三种方法实现将累加器A内容改为20H ORG 0000H LJMP MAIN ORG 0030H MAIN: ;方法一使用寄

weixin_54707168的博客 5099

springCloud 使用 eureka+RestTemplate 实现服务的注册于发现 RestTemplate的三种使用方式

SpringCloud 基础中要实现服务的注册于发现,现在服务的注册有springcloud中的Eureka和阿里系的一套,在服务的发现中我们可以使用 RestTemplate fegin 或者zuul,这里主要介绍了RestTemplate的三种使用方式 主要还是在应用实例中去操作,所有的代码有点多,本文只介绍主要的代码。 1.前提: 使用Eureka 做注册中心,建立productProj...

大白的博客 2738

前程无忧Python岗位数据采集:基于API直连的高效招聘信息爬取实战

本文介绍了一个基于Python requests库的前程无忧招聘数据采集系统。项目通过分析API接口结构,配置完整的请求头和身份验证参数,实现了高效稳定的数据采集。系统支持多页数据批量获取,包含工作名称、薪资范围等关键字段的结构化解析,并将结果存储为Excel文件。技术实现涉及API分析、身份验证、请求头配置、数据清洗等关键步骤,同时强调遵守法律和道德规范。该系统可为求职者、HR和市场分析师提供有价值的行业数据支持,适用于市场分析、职业规划等场景。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 1549

SpringCloud学习笔记(五)服务之间的调用,RestTemplate

微服务之间是通过RPC来交互的。 Eureka server和client 的jar包 都会引用一个 ribbon 包和httpclient包,显然Eureka是通过httpclient来进行通信的。 我们需要服务与服务之间进行通信,至少得有2个服务才能看出效果(自己和自己通信的别闹)。 所以我们从会员服务copy出一个订单服务。 pom.xml 是一样的(除了项目名artifactI...

qubeleyZ的博客 625

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

SpringCloud 服务之间的通信方式

在springcloud中服务间调用方式主要是使用 http restful方式进行服务间调用 一、 基于RestTemplate的服务调用 0.说明 spring框架提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接, 我们只需要传入url及返回值类型即可。相较于之前常用的HttpClient,RestTemplate是一种更优雅的调用RESTful服务的方式。 1.创建两个服务并注册到consul注册中心中

Arog的博客 2566

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SpringCloud 微服务系列——【服务间的通信方式、OpenFeign、Hystrix组件使用】

1、服务间通信方式 1.1、基于RestTemplate的服务调用 2.2、基于Ribbon的服务调用 2、OpenFeign组件的使用 3、Hystrix组件使用

不迁怒,不贰过。小知识,大智慧。 3555

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

SpringCloud笔记(2)—服务之间的通信

SpringCloud微服务即是由一系列细小的服务构成的,而服务是由SpringBoot创建构成的。因此,在项目的开发过程中我们将各个模块划分出来分别使用SpringBoot进行开发,例如 我们 将卖家端的 商品管理模块 和 订单管理模块 划分成两个SpringBoot微服务项目。此时就会出现问题,订单管理模块中 客户下单时,需要进行对 商品管理模块的 商品库存信息进行数据操作,那么 订单模块 如...

吃西瓜不吐葡萄皮 562

springCloud系列一(使用restTemplate进行服务调用)

微服务架构的概念 微服务架构 是⼀种架构模式,它提倡将单⼀应⽤程序划分成⼀组⼩的服务,服务之间互相协调、互相配合,为⽤户提供最终价值。每个服务运⾏在其 独⽴的进程中 ,服务与服务间采⽤轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API)。每个服务都围绕着具体业务进⾏构建,并且能够被独⽴的部署到⽣产环境、类⽣产环境等。另外, 应当尽量避免统⼀的、集中式的服务管理机制, 对具体...

4047

如何解决服务之间的通信问题?

文章目录1、如何解决服务之间的通信问题?2、如何在java代码中发起http方式请求?3、实现服务间通信的小案例3.1 使用两个测试服务 用户服务users和订单服务orders3.2 用户服务和订单服务都是两个独立的SpringBoot应用3.3 两个服务都引入consul client依赖和健康检查依赖3.4 配置两个服务的application.properties3.5 在两个服务的入口类中加入服务注册client注解3.6 控制器开发(这里进行服务提供者和服务消费者开发)3.6.1 服务提供者(订

冲出仁川,走出马德里,故事还会再继续 2364

SpringCloud服务间通信

springCloud 服务间的通信方式有两种 RestTemplate 方式 Feign 的方式 服务端–商品服务 客户端–订单服务 RestTemplate 方式 第一种方式 缺点:URL固定写死了 1、当注册中心有很多服务时,我们可能不知道我们需要的服务由谁提供,无法获取对方IP,因此就可能无法调用到服务。 2、实际业务场景中,并发量大,需要部署多台服务器, “localhost:9080/getMsg,localhost:9081/getMsg “,那么此时就需要负载均衡用户具体使用哪

cybxh的博客 1056

SpringCloud学习笔记二:服务间调用

微服务中,很多服务系统都在独立的进程中运行,通过各个服务系统之间的协作来实现一个大项目的所有业务功能。服务系统间 使用多种跨进程的方式进行通信协作,而RESTful风格的网络请求是最为常见的交互方式之一。在上一篇文章中我们介绍了服务的注册与发现,在此基础上我们将之前创建的eureka-client作为服务消费方创建一个服务提供方。

RHeng的博客 5613
上一篇: SpringCloud 学习笔记五 多模块搭建-搭建Order模块
下一篇: SpringCloud 学习笔记七 多模块搭建-实现客户端均衡(Ribbon)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值