所有课程的学习及相关资料都是源自b站黑马程序员
感谢黑马程序员给予我们新手的无私帮助,感谢!!!
黑马程序员-----yyds
一、开始
唠叨一句,每个SpringCloud版本其实都对应了一个SpringBoot的版本,所以大家在使用SpringCloud的时候还是需要注意一下自己的SpringBoot版本。
然后我们再谈谈微服务的服务拆分操作,以前我们写一个后端web项目的时候,所有的业务都是写在一个项目里面的,现在我们模拟两台不同的机器(也就是order-servcie和user-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请求了。
到此为止,我们完成了简单的服务远程调用功能。
共勉
求一键三连、谢谢!