当前位置: 首页 > news >正文

Spring Cloud--从零开始搭建微服务基础环境【四】

😀前言
本篇博文是关于Spring Cloud–从零开始搭建微服务基础环境【四】,希望你能够喜欢

🏠个人主页:晨犀主页
🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在此感谢啦😊

文章目录

  • 微服务基础环境搭建【四】
    • 创建共用模块-供其它模块使用
      • 需求说明/图解
      • 思路分析/图解
      • 实现步骤
        • 创建Moduel & 完成配置
          • 创建e_commerce_center-common-api
          • 修改e_commerce_center-common-api 的pom.xml
        • 抽取共用API/类
          • entity【从前面的工程拷贝即可】
        • 使用Maven 打包成jar
        • 工程重构
          • 在member-service-consumer-80 引入e_commerce_center-common-api-1.0-SNAPSHOT.jar
          • 在member-service-provider-10000 引入e_commerce_center-common-api-1.0-SNAPSHOT.jar
        • 完成测试

微服务基础环境搭建【四】

创建共用模块-供其它模块使用

需求说明/图解

image-20230825112714203

思路分析/图解

1、创建Moduel & 完成配置

2、创建entity, 把共用的实体类放到对应的包下

3、完成测试

实现步骤

创建Moduel & 完成配置

创建e_commerce_center-common-api

由于创建模块步骤一致,这里不做描述。

父工程的pom.xml-会做相应变化,管理e_commerce_center-common-api子模块。

image-20230825121637785

修改e_commerce_center-common-api 的pom.xml
<?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"><parent><artifactId>e-commerce-center</artifactId><groupId>com.my.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>e_commerce_center-common-api</artifactId><!--引入公共模块需要的依赖--><dependencies><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><!--解读<optional>true</optional>:1. true表示两个项目之间依赖不传递2. 小伙伴可以这里理解<optional>true</optional>: 防止将该依赖传递到其他模块中说的再具体一点,比如member-service-consumer-80模块依赖了本项目,那么本项目不会把lombok 传递给 member-service-consumer-803. 不设置optional或者optional是false,表示传递依赖--><optional>true</optional></dependency></dependencies>
</project>

抽取共用API/类

entity【从前面的工程拷贝即可】

创建com/my/springcloud/entity/Member.java

@AllArgsConstructor
@NoArgsConstructor
@Data
//Serializable 加上,后面可能使用
public class Member implements Serializable {private Long id;private String name;private String pwd;private String mobile;private String email;private Integer gender;
}

创建com/my/springcloud/entity/Result.java

/**
* 1. 用于返回结果, 利于json 格式
* 2. 这个工具类, 在网上也可找到
*/
public class Result<T> {private String code;private String msg;private T data;public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public T getData() {return data;}public void setData(T data) {this.data = data;}public Result() {}public Result(T data) {this.data = data;}public static Result success() {Result result = new Result<>();result.setCode("200");result.setMsg("success");return result;}public static <T> Result<T> success(T data) {Result<T> result = new Result<>(data);result.setCode("200");result.setMsg("success");return result;}public static <T> Result<T> success(String msg, T data) {Result<T> result = new Result<>(data);result.setCode("200");result.setMsg(msg);return result;}public static Result error(String code, String msg) {Result result = new Result();result.setCode(code);result.setMsg(msg);return result;}public static <T> Result<T> error(String code, String msg, T data) {Result<T> result = new Result<>(data);result.setCode(code);result.setMsg(msg);return result;}
}

使用Maven 打包成jar

1、操作步骤

image-20230825160655894

image-20230825160740449

2、可以解压e_commerce…jar 可以看到打包后的.class 文件

image-20230825160823127

工程重构

在member-service-consumer-80 引入e_commerce_center-common-api-1.0-SNAPSHOT.jar
  1. 删除原来的entity 包
  2. 修改pom.xml
<!-- 引入e_commerce_center-common-api -->
<dependency><groupId>com.my.springcloud</groupId><artifactId>e_commerce_center-common-api</artifactId><version>${project.version}</version>
</dependency>
在member-service-provider-10000 引入e_commerce_center-common-api-1.0-SNAPSHOT.jar
  1. 删除原来的entity 包
  2. 修改pom.xml
<!-- 引入e_commerce_center-common-api -->
<dependency><groupId>com.my.springcloud</groupId><artifactId>e_commerce_center-common-api</artifactId><version>${project.version}</version>
</dependency>

完成测试

首先启动微服务模块: member-service-provider-10000 和member-service-consumer-80
浏览器输入: http://localhost/member/consumer/get/1

image-20230825162624768

文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论😁
希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

相关文章:

Spring Cloud--从零开始搭建微服务基础环境【四】

&#x1f600;前言 本篇博文是关于Spring Cloud–从零开始搭建微服务基础环境【四】&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;…...

FreeRTOS操作系统中,断言输出 Error:..\..\FreeRTOS\portable\RVDS\ARM_CM4F\port.c,766 原因

分析&#xff1a;Error:..\..\FreeRTOS\portable\RVDS\ARM_CM4F\port.c,766 出现这个原因表示&#xff0c;你现在系统某个中断的优先级高于FreeRTOS可管理的优先级范围&#xff0c;一旦你这个中断触发&#xff0c;断言的信息即你串口就会输出这个条语句&#xff08;前提你串口…...

【Linux】进程间通信与同步

IPC进程间通信 无名管道pipe&#xff08;血缘关系的进程&#xff09;有名管道fifo &#xff08;无血缘关系的进程&#xff09;共享内存信号(开销小)消息队列信号量套接字 进程间同步 文件锁信号量...

SpringBoot 统一功能处理

目录 一、用户登录权限验证 1.1 SpringAOP可以进行处理吗&#xff1f; 1.2 创建自定义拦截器 1.3 将自定义拦截器配置到系统配置项中 1.4 拦截器的实现原理 1.4.1 实现原理源码分析 1.5 统一访问前缀添加 二、统一异常处理 2.1 为什么需要使用统一异常处理&#xff1f;…...

解决:sh: vite: command not found

文章目录 问题描述原因分析解决方案 问题描述 第一次pull项目&#xff0c;运行npm run dev时报错&#xff1a;sh: vite: command not found 原因分析 查看了package.json&#xff0c;发现是有vite的。 没有安装依赖导致的&#xff1b; 解决方案 执行npm i重新安装依赖&#…...

el-select下拉多选框 el-select 设置默认值不可删除功能

Element3.0vue3.0 el-select下拉多选框 el-select 设置默认值不可删除功能 Element-UI是一款广泛使用的Vue.js组件库&#xff0c;其中El-Select下拉多选框组件在实际项目开发中经常被使用。然而&#xff0c;在Element 3.0版本中&#xff0c;El-Select下拉多选框默认值可被删除&…...

Jetsonnano B01 笔记1:基础理解—网络配置—远程连接

今日开始学习 Jetsonnano B01&#xff0c;这是一台小电脑&#xff0c;可以用来&#xff1a; 运行现代 AI 负载&#xff0c;并行运行多个神经网络&#xff0c;以及同时处理来自多个高清传感器的数据&#xff0c;可广泛应用与图像分类、对象检测、图像分割、语音处 理等领域。它…...

Ubuntu系统信息查看指南:了解你的操作系统

要查看Ubuntu系统的信息&#xff0c;你可以使用一些命令行工具来获取系统的各种信息。以下是一些常用的命令&#xff1a; 1. lsb_release -a&#xff1a;列出Ubuntu版本号、发行代号和描述信息。 2. uname -a&#xff1a;显示Linux内核的版本信息。 3. lscpu&#xff1a;提供…...

【STM32】学习笔记-SPI通信

SPI通信 SPI通信&#xff08;Serial Peripheral Interface&#xff09;是一种同步的串行通信协议&#xff0c;用于在微控制器、传感器、存储器、数字信号处理器等之间进行通信。SPI通信协议需要使用4个线路进行通信&#xff1a;时钟线(SCLK)、主输入/主输出线(MISO)、主输出/主…...

解决vue项目首行报红( ESLint 配置)和新建的vue文件首行报红问题

目录 前情提要&#xff1a; 修改ESLint 配置 新建的vue文件首行还是报红 报红原因&#xff1a; 解决方法&#xff1a; 前情提要&#xff1a; 在网上查到的方法可能是在package.json文件或者.eslintrc.js文件中添加 requireConfigFile: false 如果此方法对你的错误不起作用…...

Linux 调试技术 Kprobe

目录 用途&#xff1a;一、技术背景1.1 kprobes的特点与使用限制1.2 kprobe原理 二、 基于kprobe探测模块的探测方式2.1、struct kprobe结构体2.2 kprobe API函数2.3 示例代码参考资料&#xff1a; 用途&#xff1a; 判断内核函数是否被调用&#xff0c;获取调用上下文、入参以…...

一文了解评估 K8s 原生存储产品需要关注的关键能力

近些年&#xff0c;越来越多的企业使用 Kubernetes&#xff08;K8s&#xff09;支持生产环境关键业务。这些业务往往对存储性能和稳定性具有更高的要求&#xff0c;传统存储方案难以充分满足&#xff0c;因此不少用户开始关注更契合 K8s 环境的 K8s 原生存储方案。 不过&#…...

linux免密登录报错 Bad owner or permissions on /etc/ssh/ssh_config.d/05-redhat.conf

问题&#xff1a;权限不对的 解决&#xff1a; 1.检查文件的所有者和权限。 确保文件的所有者是正确的。 运行以下命令来确定文件的所有者和权限&#xff1a; ls -l /etc/ssh/ssh_config.d/05-redhat.conf 通常情况下&#xff0c;SSH配置文件应该属于root用户。如果所有者不是…...

Kafka常用参数

文章目录 概要broker端参数producer端参数consumer端参数 概要 kafka broker、consumer、和producer都有很多可配置的参数。本文主要总结日常开发中常用到的参数。其中producer端可以在org.apache.kafka.clients.producer.ProducerConfig 中找到配置项&#xff0c;consumer端可…...

NFT Insider#105:The Sandbox即将参加韩国区块链周,YGG的声誉和进步(RAP)将引领玩家晋升到下一层级

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members(https://twitter.com/WHALEMembers)、BeepCrypto&#xff08;https://twitter.com/beep_crypto&#xff09;联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周…...

TCP socket error (The proxy type is invalid for this operation).

“TCP socket error (The proxy type is invalid for this operation)” 错误通常是由于使用了无效的代理类型导致的。在使用QModbusTcpClient连接Modbus TCP设备时&#xff0c;如果您没有配置代理服务器&#xff0c;或者配置的代理类型不正确&#xff0c;就会出现这个错误。 …...

根据需求生成一个Vue模块的类图示例

以下是一个Vue模块的类图示例&#xff1a; ------------------------ | VueModule | ------------------------ | -name: string | | -data: object | | -methods: object | | -computed: object | | -watchers: object | ---…...

C# 类class、继承、多态性、运算符重载,相关练习题

34.函数重载 /*函数重载您可以在同一个范围内对相同的函数名有多个定义。函数的定义必须彼此不同&#xff0c;可以是参数列表中的参数类型不同&#xff0c;也可以是参数个数不同。不能重载只有返回类型不同的函数声明。下面的实例演示了几个相同的函数 Add()&#xff0c;用于对…...

Mysql高级(进阶)SQL语句

目录 常用查询 按关键字排序 区间判断及查询不重复记录 对结果进行分组 限制结果条目 设置别名&#xff08;alias —— as&#xff09; 通配符 子查询 MySQL视图 NULL 值 连接查询 常用查询 &#xff08;增、删、改、查&#xff09; 对 MySQL 数据库的查询&#xf…...

java八股文面试[JVM]——JVM性能优化

JVM性能优化指南 JVM常用命令 jps 查看java进程 The jps command lists the instrumented Java HotSpot VMs on the target system. The command is limited to reporting information on JVMs for which it has the access permissions. jinfo &#xff08;1&#xff09;实时…...

百考通:AI让每一份调研与设计都高效落地

在数字化时代&#xff0c;市场调研、产品设计、学术研究等场景中&#xff0c;问卷设计作为核心环节&#xff0c;直接影响着数据收集的质量与工作推进的效率。传统问卷设计往往面临流程繁琐、耗时耗力、问题设计不精准等痛点&#xff0c;而百考通&#xff08;https://www.baikao…...

什么是数字员工?AI销冠系统与AI提效软件系统在提升销售效率中的关键角色是什么?

数字员工成为一种新兴的AI销售工具&#xff0c;正在为企业优化业务流程和提升运营效率提供巨大助力。这些智能化的虚拟职员能够处理大量的客户咨询&#xff0c;全天候地维护客户关系&#xff0c;显著减少了人力资源的消耗。依靠AI销冠系统&#xff0c;这些数字员工除了实时分析…...

STM32F030 HAL库驱动W25Q16实战:从数据手册到SPI读写代码(附避坑指南)

STM32F030 HAL库驱动W25Q16实战&#xff1a;从数据手册到SPI读写代码&#xff08;附避坑指南&#xff09; 1. 理解W25Q16存储芯片的核心特性 W25Q16作为一款16Mbit容量的SPI Flash存储器&#xff0c;在嵌入式系统中扮演着重要角色。这款芯片采用标准的SPI接口&#xff0c;支持单…...

Python实战:基于奇异谱分析(SSA)的时序数据分解与重构

1. 奇异谱分析(SSA)入门指南 第一次接触奇异谱分析(SSA)时&#xff0c;我被它优雅的数学结构和强大的分析能力所吸引。SSA本质上是一种将时间序列分解为趋势、周期和噪声成分的非参数方法&#xff0c;特别适合处理那些传统方法难以应对的非线性、非平稳时序数据。 SSA的核心思想…...

STM32F103 + TM1628实战:如何用31个LED做一个可调亮度的简易仪表盘?

STM32F103 TM1628实战&#xff1a;如何用31个LED打造智能动态仪表盘 在嵌入式开发领域&#xff0c;将基础硬件模块转化为实用创意项目的能力&#xff0c;往往是区分普通开发者和资深工程师的关键。STM32F103作为经典的ARM Cortex-M3内核微控制器&#xff0c;以其出色的性价比和…...

FreeRTOS移植避坑指南:当你的芯片不在官方支持列表时(以S3C2440为例)

FreeRTOS移植实战&#xff1a;非官方支持芯片的定制化开发方法论 当你的项目需要将FreeRTOS移植到非官方支持芯片时&#xff0c;整个过程就像在未知海域航行——没有现成的海图&#xff0c;但掌握正确的导航方法同样能到达目的地。以经典的ARM9芯片S3C2440为例&#xff0c;这种…...

Cat-Catch:浏览器资源嗅探的终极解决方案与实用指南

Cat-Catch&#xff1a;浏览器资源嗅探的终极解决方案与实用指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在当今数字内容爆炸的时代&#xf…...

Unity3d之随机生成数字

UnityEngine.Random.Range(min,max)‌包含最小值‌‌不包含最大值Mathf.Clamp是限定范围...

《CVPR2025-DEIM创新改进项目实战:从原理到部署的深度学习优化全攻略》005、DEIM模型架构总览——编码器-解码器与动态门控设计

CVPR2025-DEIM创新改进项目实战:DEIM模型架构总览——编码器-解码器与动态门控设计 从一次诡异的梯度爆炸说起 去年冬天调DEIM的早期原型,模型在训练到第47个epoch时突然loss飙到NaN。检查了三天,最后发现是门控模块的sigmoid输出在极端情况下饱和,导致梯度回传时门控信号…...

Python异步编程模式:从同步到异步的演进

Python异步编程模式&#xff1a;从同步到异步的演进 引言 在Python开发中&#xff0c;异步编程模式是构建高性能应用的关键。作为一名从Rust转向Python的后端开发者&#xff0c;我深刻体会到异步编程在处理高并发场景时的优势。本文将深入探讨Python中的异步编程模式及其最佳实…...