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

news2025/1/17 1:03:26

1.建cloud-consumer-order80

建cloud-consumer-order80

2.改pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="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.主启动

package com.atguigu.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * 简要描述
 *
 * @Author: ASuLe
 * @Date: 2023/1/11 20:17
 * @Version: 1.0
 * @Description: 文件作用详细描述....
 */
@SpringBootApplication
public class OrderMain80 {
    public static void main(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配置类

位置
位置

package com.atguigu.springcloud.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

/**
 * 简要描述
 *
 * @Author: ASuLe
 * @Date: 2023/1/11 20:34
 * @Version: 1.0
 * @Description: 文件作用详细描述....
 */
@Configuration
public class ApplicationContextConfig {

    //@Bean相当于applicationContext.xml <bean id="" class=""/>
    @Bean
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }

}

5.4controller

package com.atguigu.springcloud.controller;

import com.atguigu.springcloud.entities.CommonResult;
import com.atguigu.springcloud.entities.Payment;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

/**
 * 简要描述
 *
 * @Author: ASuLe
 * @Date: 2023/1/11 20:23
 * @Version: 1.0
 * @Description: 文件作用详细描述....
 */
@RestController
@Slf4j
public class OrderController {

    public static final String PAYMENT_URL = "http://localhost:8001";

    @Resource
    private RestTemplate restTemplate;

    //这里是客户端都是发送GetMapping请求
    @GetMapping("/consumer/payment/create")
    public CommonResult<Payment> create(Payment payment) {
        return restTemplate.postForObject(PAYMENT_URL + "/payment/create", payment, CommonResult.class);
    }

    @GetMapping("/consumer/payment/get/{id}")
    public CommonResult<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注解
再次尝试插入

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/155834.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

黑客在 GitHub 上的劫持活动中使用验证码绕过策略

作为名为 PURPLEURCHIN 的免费劫持活动的一部分&#xff0c;已观察到一个名为 Automated Libra 的南非威胁行为者使用验证码旁路技术以编程方式创建 GitHub 帐户。 Palo Alto Networks Unit 42 研究人员 William Gamazo 和 Nathaniel Quist 表示&#xff0c;该组织“主要针对提…

【UE4 第一人称射击游戏】36-切换武器时改变UI

上一篇&#xff1a;UE4 第一人称射击游戏】35-击中目标时添加准心提示本篇效果&#xff1a;步骤&#xff1a;打开项目设置&#xff0c;添加两个操作映射两个操作映射分别命名为“SelectPrimary”和“SelectSecondary”&#xff0c;通过键盘1和2控制&#xff0c;分别表示玩家当前…

【MySQL】-【索引的创建与设计原则】

目录索引的声明与使用索引的分类创建索引创建表的时候创建索引在已经存在的表上创建索引索引的声明与使用 索引的分类 MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。&#xff08;没有空间索引是因为有的存储引擎不支持空间索引&#xff…

波士顿房价预测——机器学习入门级案例

一、数据处理 1.1 数据集介绍 本实验使用波士顿房价预测数据集&#xff0c;共506条样本数据&#xff0c;每条样本包含了12种可能影响房价的因素和该类房屋价格的中位数&#xff0c;各字段含义如下表所示&#xff1a; 字段名类型含义CRIMfloat该镇的人均犯罪率ZNfloat占地面积…

springboot中迁移接口报404错误找不到 main方法java.lang.UnsupportedClassVersionError的经历

一、出现问题公司有接口要迁移到新服务中&#xff0c;服务不能启动错误大概如下&#xff1a;错误: 在类 ### 中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args) 否则 JavaFX 应用程序类必须扩展javafx.application.Application问题1解决后&am…

字符串函数和内存函数

在c语言中&#xff0c;有非常多的库函数&#xff0c;比如我们经常使用的scanf和printf&#xff0c;除此之外&#xff0c;还有一些非常实用的函数&#xff0c;比如我们之前使用的qsort排序函数&#xff0c;可以对任意数据类型进行排序&#xff0c;strlen函数&#xff0c;可以计算…

1.5万字总结 Redis 常见面试题知识点

以下内容来源于于我开源的 JavaGuide (Java学习&&面试指南,Github 130k star,370人共同参与爱完善), 万字总结,质量有保障! Redis 基础 什么是 Redis? Redis 是一个基于 C 语言开发的开源数据库(BSD 许可),与传统数据库不同的是 Redis 的数据是存在内存中的…

磨金石教育插画技能干货分享|学习插画可以从事什么工作?

近几年插画师这个行业越来越热&#xff0c;许多有一定绘画基础的朋友&#xff0c;都在跃跃欲试&#xff0c;想要走进插画这个行业。但不少人都有一种担忧&#xff0c;就是插画师这个职位平时听的很少&#xff0c;认为这是个冷门行业&#xff0c;是不是难以就业&#xff0c;风险…

边双连通分量

如果还未学习强连通分量&#xff0c;建议先学习强连通分量的tarjan算法强连通分量&#xff08;tarjan算法&#xff09; 1&#xff0c;定义 相对于在单向图的强连通分量&#xff0c;双连通分量是在无向图中&#xff0c;无向图有一个特点&#xff0c;可以以任何一个点为根节点建…

Java开发常见漏洞及解决方案

文章目录1.健康监控Actuator暴露端口2.SSRF漏洞攻击3.富文本XSS攻击4.暴力破解短信验证码登录5.恶意短信轰炸骚扰用户6.低版本Fastjson导致RCE漏洞7.SQL注入漏洞8.水平越权信息泄露9.权限绕过漏洞1.健康监控Actuator暴露端口 ​ Actuator是Springboot提供的用来对应用系统进行…

html 判断视频是否播放

html 判断视频是否播放 html <video id"video" loop preload"auto" autoplay><source src"1.mp4" type"video/mp4">您的浏览器不支持Video标签。 </video> js代码 var videodocument.querySelector("#vide…

phpstudy如何安装PHP扩展sg11

1、下载sg11扩展文件压缩包&#xff0c;下载地址&#xff1a;PHP扩展sg11.zip - 蓝奏云 2、解压下载好的sg11压缩包&#xff0c;选择对应你自己的服务器系统文件夹&#xff0c;我的是Windows 64-bit 3、打开Windows 64-bit&#xff0c;复制对应PHP版本的.win文件&#xff0c;…

电脑一键重装系统win11步骤教程

win11系统是微软目前最新的操作系统&#xff0c;很多人都想给电脑重装系统win11体验。那么具体要怎么重装系统win11呢?我们可借助一键装机工具实现&#xff0c;下面就演示下简单的一键重装系统win11步骤教程 工具/原料&#xff1a; 系统版本&#xff1a;Windows 11 品牌型号…

基于轻量级ShuffleNetv2+YOLOv5的DIC-C2DH-HeLa细胞检测识别分析系统

ShuffleNetv2可以说是目前轻量级网络模型中的翘楚&#xff0c;将ShuffleNetv2于yolov5整合开发可以使得模型更加轻量化&#xff0c;在提升模型速度的同时保证有效的精度。本文的主要工作就是将ShuffleNetv2整合进yolov5中来开发构建细胞检测模型&#xff0c;首先看下效果图&…

4-3文件管理-磁盘组织与管理

文章目录一.磁盘的结构二.磁盘调度算法&#xff08;一&#xff09;一次读/写磁盘需要的时间&#xff08;二&#xff09;磁盘调度算法1.先来先服务FCFS2.最短寻找时间优先SSTF3.扫描算法/电梯调度算法SCAN4.循环扫描算法C-SCAN&#xff08;三&#xff09;减少磁盘延迟时间的方法…

再谈模板(19)

目录 1、非类型模板参数 2、模板的特化 1、定义 2、函数模板特化 3、类模板特化 1、全特化 2、偏特化 3、分离编译 1、什么是分离编译 2、模板不支持分离编译 4、模板总结 1、非类型模板参数 模板参数&#xff1a;类型形参与非类型形参。 类型形参&#xff1a;出现…

Leetcode - 24 - 两两交换链表中的节点

24. 两两交换链表中的节点 题目描述 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&#xff1a;h…

重写部分调试体系的DebugPort隐藏

背景逛世界上最大的交友网站的时候发现了一个开源的vt调试器&#xff0c;抱着学习的心态&#xff0c;下载下来学习学习。但是呢&#xff0c;实际编译出来的程序和release发布的有很大的区别&#xff0c;而且源码很乱&#xff0c;release版本的驱动至少能调试程序&#xff0c;但…

文件IO操作

日升时奋斗&#xff0c;日落时自省 目录 1、文件基本认知 1.1、文件路径 1.2、相对路径 1.3、文件类型 2、Java的文件操作 2.1、文件操作类File 3、数据流读写 3.1字节流读文件 3.2、字节流写文件 3.3、字符流读操作 3.4、字符流写操作 4、文件操作案例 4.1、删除…

【自学Python】Python类型转换

Python类型转换 Python类型转换教程 虽然 Python 是弱类型编程语言&#xff0c;不需要像 Golang 或 C/C 语言那样还要在使用 变量 前声明变量的类型&#xff0c;但在一些特定场景中&#xff0c;仍然需要用到类型转换。 对 Python 内置的数据类型进行转换时&#xff0c;可以使…