0


【SpringCloud04】订单-支付微服务模块(消费者订单模块)

1.建cloud-consumer-order80

建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服务控制台
service服务控制台

6.测试

6.1测试查询

查询成功

查询成功

6.2测试插入

测试插入

看似插入成功,真的是这样吗?
如下图所示,插入的数据有主键,但是无内容

插入失败
不要忘记@RequestBody注解
不要忘记@RequestBody注解
再次尝试插入

再次尝试插入
数据库中含有数据,插入成功
插入成功


本文转载自: https://blog.csdn.net/qq_45291280/article/details/128650256
版权归原作者 艾卡西亚丶暴雨L 所有, 如有侵权,请联系我们删除。

“【SpringCloud04】订单-支付微服务模块(消费者订单模块)”的评论:

还没有评论