1.建cloud-consumer-order80
2.改pom
<?xml version="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.atguigu.springcloud</groupId><artifactId>cloud2022</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>cloud-consumer-order80</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies></project>
3.写yml
server:port:80
4.主启动
packagecom.atguigu.springcloud;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;/**
* 简要描述
*
* @Author: ASuLe
* @Date: 2023/1/11 20:17
* @Version: 1.0
* @Description: 文件作用详细描述....
*/@SpringBootApplicationpublicclassOrderMain80{publicstaticvoidmain(String[] args){SpringApplication.run(OrderMain80.class,args);}}
5.业务类
问题1: 客户端是否需要controller层、service层、dao层吗?
回答: 不需要,只需要controller。
原因: 消费者调用8001提供者,提供服务的是8001,类似于同学不懂Java才找老师学习Java,这里老师就是教学服务的提供者,所以只应该有个controller,至于service和dao,不可能,因为你不可能操作提供者的数据库。
问题2: 但是order80和payment8001是不同的服务,该怎么调用呢?
解决1: 最原始web阶段使用HttpClient
解决2: 现在用restTemplate
5.1entities
主实体类Payment,Json封装体CommonResult类可直接复制
5.2RestTemplate
RestTemplate是什么
RestTemplate提供了多种便捷访问远程Http服务的方法,是一种简单便捷的restful服务模板类,是Spring提供的用于访问Rest服务的
客户端模板工具集
RestTemplate官网及使用
RestTemplate官网地址
使用:
使用RestTemplate非常简单
- url:REST请求地址
- requestMap:请求参数
- ResponseBean.class:HTTP响应转换被转换成的对象类型
5.3config配置类
位置
packagecom.atguigu.springcloud.config;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.client.RestTemplate;/**
* 简要描述
*
* @Author: ASuLe
* @Date: 2023/1/11 20:34
* @Version: 1.0
* @Description: 文件作用详细描述....
*/@ConfigurationpublicclassApplicationContextConfig{//@Bean相当于applicationContext.xml <bean id="" class=""/>@BeanpublicRestTemplategetRestTemplate(){returnnewRestTemplate();}}
5.4controller
packagecom.atguigu.springcloud.controller;importcom.atguigu.springcloud.entities.CommonResult;importcom.atguigu.springcloud.entities.Payment;importlombok.extern.slf4j.Slf4j;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.PathVariable;importorg.springframework.web.bind.annotation.RestController;importorg.springframework.web.client.RestTemplate;importjavax.annotation.Resource;/**
* 简要描述
*
* @Author: ASuLe
* @Date: 2023/1/11 20:23
* @Version: 1.0
* @Description: 文件作用详细描述....
*/@RestController@Slf4jpublicclassOrderController{publicstaticfinalStringPAYMENT_URL="http://localhost:8001";@ResourceprivateRestTemplate restTemplate;//这里是客户端都是发送GetMapping请求@GetMapping("/consumer/payment/create")publicCommonResult<Payment>create(Payment payment){return restTemplate.postForObject(PAYMENT_URL+"/payment/create", payment,CommonResult.class);}@GetMapping("/consumer/payment/get/{id}")publicCommonResult<Payment>getPayment(@PathVariable("id")Long id){return restTemplate.getForObject(PAYMENT_URL+"/payment/get/"+ id,CommonResult.class);}}
service服务控制台
6.测试
6.1测试查询
查询成功
6.2测试插入
看似插入成功,真的是这样吗?
如下图所示,插入的数据有主键,但是无内容
不要忘记@RequestBody注解
再次尝试插入
数据库中含有数据,插入成功
版权归原作者 艾卡西亚丶暴雨L 所有, 如有侵权,请联系我们删除。