《SpringCloud》笔记三:RestTemplate实现服务之间的远程调用

所有课程的学习及相关资料都是源自b站黑马程序员
感谢黑马程序员给予我们新手的无私帮助,感谢!!!
黑马程序员-----yyds

一、开始

唠叨一句,每个SpringCloud版本其实都对应了一个SpringBoot的版本,所以大家在使用SpringCloud的时候还是需要注意一下自己的SpringBoot版本。
在这里插入图片描述
然后我们再谈谈微服务的服务拆分操作,以前我们写一个后端web项目的时候,所有的业务都是写在一个项目里面的,现在我们模拟两台不同的机器(也就是order-servcieuser-service),也就是拆分出来了两个服务,现在我们要解决的问题是如何让两个服务之间可以互相调用,而且调用的返回数据类型满足我们所需要的数据类型。

那么,在开始本次任务之前,我们需要先说明一下我们的需求:

  • 我们现在有两个模块(order-service模块,代表订单模块,user-service模块,代表用户模块)。
  • 需求是用户通过订单模块,不仅查出订单数据,而且也要一并查出与该订单关联的用户数据 。

在这里插入图片描述

完成上面的叙述,我们再看看我们上次导入的项目内容
先看到order-service这个服务

在这里插入图片描述

很明显order-service里面的这个控制器是可以支持根据id来查询订单的,返回是查询的对象数据,但是由于控制器类型使用的是@RestController,所以返回给浏览器的结果应该是被封装为json数据的对象数据。

打开cmd内的数据库连接

我们运行order-service,在浏览器下输入如下地址进行测试结果

在这里插入图片描述
没有问题,同理我们再测试一下user-service
运行,浏览器输入如下数据

在这里插入图片描述

二、服务远程调用说明

我们的需求如下

在这里插入图片描述
我们再看看我们上次查到的数据里面是否有用户数据

在这里插入图片描述
很明显查出的结果是null,说明并没有查出用户数据。

那么来揪一揪里面的问题:

浏览器为什么可以请求获取到相关的订单数据,因为浏览器给后端服务器发送了一个http请求,那要想订单模块获取到用户模块的数据,我们是不是也可以让订单模块也模拟给用户模块服务器模拟发送http请求呢,这样子是不是就可以解决问题了。

在这里插入图片描述
然后再将获取的数据进行结合是不是就得到了我们想要的结果。

在这里插入图片描述

三、RestTemplate的使用

那么Spring框架也为我们提供了一种发送各种Htpp请求的工具类——
RestTemplate

好的,我们知道使用那个工具之后,就按部就班开始干活吧。

3.1 注册RestTemplate

我们应该在Spring相关的配置文件里面配置RestTemplate,而很明显,通过@SpringBootApplication修饰的类就是一个配置类,而且还是项目的启动类,我们可以在该类里面将RestTemplate注册为一个Bean供Spring管理,到时候我们使用的时候只需要实现自动装配的注解就可以。

很明显,我们现在是order-service模拟给user-service发送http请求,以获取到user的数据。所以我们需要为order-service配置该工具类。

在这里插入图片描述
这样,我们的配置注册任务就完成了。

3.2 RestTemplate发送http请求

进入到OrderService.java类里面,我们需要修改一些代码

在这里插入图片描述
我们再进行如下的操作

在这里插入图片描述
提一句,上面模拟的是对user-service模块的http请求,返回是默认类型是json类型,但是我们需要的是user类型,所以进行了转换。

完成代码的修改,我们重新运行order-service程序
然后打开浏览器, 输入以下URL数据

在这里插入图片描述

可以看到,这次的User属性就不是null了,现在我们就实现了简单的模拟http请求了。

到此为止,我们完成了简单的服务远程调用功能。
共勉

求一键三连、谢谢!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
很高兴能够为你提供关于Spring Cloud的笔记。Spring Cloud是一套基于Spring Boot的微服务框架,它提供了一系列开箱即用的工具和组件,帮助开发者快速构建和部署分布式系统。下面是一些关键的笔记要点: 1. 服务注册与发现:Spring Cloud提供了Eureka、Consul和Zookeeper等注册中心,用于服务的注册与发现,实现服务之间的自动发现和负载均衡。 2. 服务调用:通过Spring Cloud的RestTemplate或Feign客户端,可以轻松实现服务之间远程调用。Feign还支持声明式的服务调用,简化了代码的编写。 3. 负载均衡:Spring Cloud提供了Ribbon和LoadBalancer等组件,用于实现负载均衡。通过配置负载均衡策略,可以将请求分发到不同的服务实例上。 4. 服务容错:通过Hystrix或Sentinel等组件,可以实现服务的容错和熔断。当某个服务不可用时,可以快速失败或者返回默认值,保证整个系统的稳定性。 5. 配置中心:Spring Cloud Config提供了集中式的配置管理,可以将配置文件集中存储在Git、SVN等版本控制系统中,并实现配置文件的动态刷新。 6. 链路追踪:通过Spring Cloud Sleuth或Zipkin等工具,可以实现分布式系统的链路追踪和监控。可以了解每个请求经过的各个服务节点,便于排查和解决问题。 7. 消息驱动:Spring Cloud Stream和Spring Cloud Bus等组件,提供了消息驱动的方式来实现服务之间的解耦和异步通信。 这只是对Spring Cloud的一些简单介绍,希望能够帮助到你。如果有具体的问题或者需要进一步的资料,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌晨小街

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值