【Springcloud篇】学习笔记一(一至三章):微服务介绍、构建环境

零基础微服务架构理论入门介绍

一个基于分布式的服务架构应该含有的架构内容如下:

image-20230904210229835

1.1SpringCloud是什么

image-20230904211235017

1.2基于微服务的系统

image-20230904211035527

1.3服务与之对用的技术

image-20230904211059696

1.4课程目录

image-20230904211147286

第一章_SpringBoot和SpringCloud版本选择

详细可见SpringCloud2020.mmap文件

1.概述

image-20230904211722907

2.SpringBoot版本选择

  • git源码地址:https://github.com/spring-projects/spring-boot/releases/

  • SpringBoot2.0新特性:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Release-Notes

    通过上面官网发现,Boot官方强烈建议你升级到2.X以上版本

3.SpringCloud版本选择

  • git源码地址:https://github.com/spring-projects/spring-cloud
  • 官网:https://spring.io/projects/spring-cloud
  • Cloud版本命名规则:A-Z(目前2023年9月4日,官网更新至)

4.SpringBoot和SpringCloud之间的版本对应关系

4.1初略的版本对应关系

  • 链接:https://spring.io/projects/spring-cloud#overview

  • 结果:SpringCloud版本至少为G

image-20230904223553504

4.2更详细的版本对应关系

  • 链接:https://start.spring.io/actuator/info

  • 视频查的结果:

image-20230904223309937

今日查的结果:

image-20230904223340083

5.SpringCloud学习中各种技术版本

image-20230904223759032

  • 根据SpringCloud版本选择SpringBoot版本

image-20230904223949433

6.SpringBoot中2.X版本常用的pom

image-20230904224105719

第二章_关于Cloud组件的升级

其中sentienl为阿里巴巴开发的服务熔断技术

image-20230904230239998

1.参考资料

  • SpringCloud的Hoxton SR1版本文档

https://cloud.spring.io/spring-cloud-static/Hoxton.SR1/reference/htmlsingle/

  • SpringCloud的中文文档

https://www.bookstack.cn/read/spring-cloud-docs/docs-index.md

第三章_新建工程

1.父工程project空间新建

image-20230904233017428

image-20230904231617222

image-20230904231801698

  • maven版本以及工作环境

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

image-20230904232227466

  • 允许注解生效

image-20230904232353225

image-20230904232452192

image-20230904232714052

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><groupId>com.peng.springcloud</groupId><artifactId>cloud2020</artifactId><version>1.0-SNAPSHOT</version><!-- 使用maven分模块管理,有一个父级项目,父级项目中packaging(打包类型)为pom默认属性为jar,则maven会将项目打成jar包--><packaging>pom</packaging><!--统一管理jar包版本--><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><junit.version>4.12</junit.version><lombok.version>1.2.17</lombok.version><log4j.version>1.16.18</log4j.version><mysql.version>5.1.47</mysql.version><druid.version>1.1.16</druid.version><mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version></properties><!-- 子模块继承之后,提供作用:锁定版本,即子模块不用谢groupId和version--><dependencyManagement><dependencies><!--spring boot 2.2.2--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.2.2.RELEASE</version><type>pom</type><scope>import</scope></dependency><!--spring cloud Hoxton.SR1--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Hoxton.SR1</version><type>pom</type><scope>import</scope></dependency><!--spring cloud 阿里巴巴--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.0.RELEASE</version><type>pom</type><scope>import</scope></dependency><!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version><scope>runtime</scope></dependency><!-- druid--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid.version}</version></dependency><!--mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.spring.boot.version}</version></dependency><!--junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version></dependency><!--log4j--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency></dependencies></dependencyManagement>
</project>

3.DependencyManagement和Dependencies的区别

image-20230905095010126

  • 演示:

image-20230905095133832

image-20230905095213809

image-20230905095305688

4.支付模块构建

前说:由订单模块启动支付模块

image-20230905102430932

4.1套路

  • 建module
  • 改POM
  • 写YML
  • 主启动
  • 业务类

4.2过程

(1)建module:cloud-provider-payment8001

直接new Module即可

(2)改POM
  • 补充maven爆红解决方法

    image-20230905124653222

<?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>cloud2020</artifactId><groupId>com.peng.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>cloud-provider-payment8001-2</artifactId><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.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency><!-- mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- jdbc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</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></dependency></dependencies></project>
(3)写YML
<?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>cloud2020</artifactId><groupId>com.peng.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>cloud-provider-payment8001-2</artifactId><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.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency><!-- mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- jdbc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</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></dependency></dependencies></project>
(4)主启动

image-20230905102728829

(5)业务类
①建表
CREATE TABLE `payment` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', `serial` varchar(200) DEFAULT '', PRIMARY KEY (`id`)) 
ENGINE=InnoDB 
AUTO_INCREMENT=1 
DEFAULT CHARSET=utf8
②entites实体类
  • payment类

image-20230905124526992

  • 返回的json字符串

image-20230905130012951

③dao层
  • 接口PaymentDao

image-20230905130106019

  • mybaits的映射文件PaymentMapper.xml

image-20230905130151722

④service层

image-20230905131911162

⑤controller层

image-20230907130358305

4.3.开启热部署

(1)引入jar包-子工程
<dependency>  		<groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional>
</dependency>
(2)添加插件-父工程
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><fork>true</fork><addResources>true</addResources></configuration></plugin></plugins>
</build>
(3)设置

image-20230907125814477

(4)开启

快捷键:ctrl+shift+alt+/,选中第一个registry

image-20230907130031628

(5)重启

5.消费模块构建

建module,改pom,改yml,主启动,业务类

5.1使用restTemplate实现服务间的调用

(1)创建restTemplate对象并注入到容器中

image-20230907221837803

(2)Controller层

image-20230907221630884

(3)注意要添加支付模块的创建订单的@RequestBody注解

@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);

因为订单模块返回给支付模块的数据,即payment数据为json格式数据

image-20230907223049958

(4)补充:关闭占用80端口的进程方法

image-20230907195655758

5.2工程重构(提取公共类)

  • 新建工程、改pom、提取公共类、maven命令(clean、install)、订单80和支付8081分别改造
(1)新建并改pom

image-20230907224220335

(2)打包并子工程引入

image-20230907225303268

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

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

相关文章

Java自救手册

目录 访问地址 访问地址&#xff0c;发现不通&#xff0c;无法访问&#xff1a; 网络不通一般有两种情况&#xff1a; Maven 拿Maven 拿到Maven以后 Maven单独的报红 Git git注意&#xff1a; 目录 访问地址 访问地址&#xff0c;发现不通&#xff0c;无法访问&…

2024年美国大学生数学建模竞赛(D题)湖泊水位调控|粒子群强化学习建模解析,小鹿学长带队指引全代码文章与思路

我是鹿鹿学长&#xff0c;就读于上海交通大学&#xff0c;截至目前已经帮200人完成了建模与思路的构建的处理了&#xff5e; 此篇文章是由鹿鹿学长倾心打磨&#xff0c;解决挑战&#xff0c;创造美赛建模独特思路。融合粒子群算法、深度强化学习等前沿技术&#xff0c;构建全面…

SpringBoot 与 ZXing 完美结合,轻松生成二维码!

如何在Spring Boot应用程序中整合ZXing库&#xff0c;以创建和解析QR码&#xff1f; 那就来看看这篇文章&#xff01; QR码是一种能够存储各种数据类型的矩阵二维条码&#xff0c;通常以黑色模块和白色背景的方式呈现&#xff0c;可以用来存储文本、URL、联系信息、地理位置等…

Unity C#高级特性 Partial 详细使用案例

文章目录 实例 1&#xff1a;分隔UI逻辑实例 2&#xff1a;Unity编辑器自动生成代码实例 3&#xff1a;数据模型分割实例 4&#xff1a;序列化扩展实例 5&#xff1a;多视图架构实例 6&#xff1a;Unity编辑器自定义 inspectors 在Unity中&#xff0c;部分类&#xff08;Partia…

QT基础篇(19)QT Quick Controls开发基础

1.Qt Quick Controls 概述 QT Quick Controls是QT框架中的一个模块&#xff0c;它提供了一套可视化的用户界面控件&#xff0c;用于快速构建现代化的跨平台应用程序。 QT Quick Controls采用了QML语言来描述用户界面&#xff0c;通过调用QT Quick模块中的功能来实现丰富的交互…

jsp服装穿搭推荐系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 游戏网上商城系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0…

Rust基础拾遗--看的不多只看一篇--基础

Rust基础拾遗 前言1.基本数据类型2.所有权与移动3.引用4.表达式5.错误处理6.create与模块7.结构体8.枚举与模式9.特型与泛型10.运算符重载11.实用工具特型12.闭包13.迭代器14.集合15.字符串与文本16.输入与输出17.并发18.异步编程19.宏 前言 通过“Rust程序设计-第二版”笔记的…

Elasticsearch-内存结构

ElasticSearch的内存从大的结构可以分堆内存&#xff08;On Heap&#xff09;和堆外内存&#xff08;Off Heap&#xff09;。Off Heap部分由Lucene进行管理。On Heap部分存在可GC部分和不可GC部分&#xff0c;可GC部分通过GC回收垃圾对象&#xff0c;从而释放内存。不可GC部分不…

RNN的具体实现

这篇文章真的巨好&#xff0c;特别适合新手做复现Pytorch循环神经网络&#xff08;RNN&#xff09;快速入门与实战_torch rnn-CSDN博客

第九节HarmonyOS 常用基础组件22-Marquee

1、描述 跑马灯组件&#xff0c;用于滚动展示一段单行文本&#xff0c;仅当文本内容宽度超过跑马灯组件宽度时滚动。 2、接口 Marquee(value:{start:boolean, step?:number, loop?:number, fromStart?: boolean ,src:string}) 3、参数 参数名 参数类型 必填 描述 st…

qt -chart控件设计器可拖拉

qt -chart控件设计器可拖拉 一、演示效果二、安装过程三、核心程序四、程序链接 一、演示效果 二、安装过程 三、核心程序 #include <QtGui> #include <QColor>#include <cstdlib> #include <cassert> #include <numeric>#include <chartwor…

【Java程序设计】【C00232】基于Springboot的抗疫物资管理系统(有论文)

基于Springboot的抗疫物资管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的抗疫物资管理系统 用户主要分为管理员和普通用户 管理员&#xff1a; 管理员可以对后台数据进行管理、拥有最高权限、具体权限有…

Visual Studio 20XX中utf-8中文在控制台显示乱码

文章目录 在 Visual Studio 20xx中&#xff0c;如果源码文件是 UTF8编码&#xff0c;要打印中文到控制台时&#xff0c;控制台会显示乱码&#xff0c;可以进行以下设置。 包含<Windows.h>头文件。在main函数初始调用SetConsoleOutputCP(CP_UTF8)设置控制台输出字符集为UT…

hadoop使用公平调度器

总计写在前面&#xff0c;请使用公平调度器!!! 我根据时间节点来梳理一下发生了什么。 Stage 1&#xff08;默认调度器&#xff09; 大概在几年前&#xff0c;搭建的数仓集群中。数据量不大&#xff0c;做离线一个晚上就能轻松调度完&#xff0c;那时候使用的hadoop自带的调度…

Unity3D开发之鼠标单双击判断

在开发游戏和交互式应用程序时&#xff0c;经常需要对用户的鼠标点击进行准确的响应。其中&#xff0c;单击和双击事件的判断是常见需求之一。本文将介绍如何在Unity中优雅地实现鼠标单双击判断&#xff0c;使代码结构清晰、易读、易维护。 背景 在许多项目中&#xff0c;我们…

【LLM KBQA】FlexKBQA:一种结合LLM的KBQA框架

前言 大语言模型&#xff08;LLMs&#xff09;在知识库问答&#xff08;KBQA&#xff09;领域的应用主要集中在包括但不限于以下几个方面&#xff1a; 直接生成答案&#xff1a;一些方法直接利用LLMs生成答案&#xff0c;而不是生成中间的程序&#xff08;如SPARQL查询&#…

算法学习——华为机考题库3(HJ21 - HJ25)

算法学习——华为机考题库3&#xff08;HJ21 - HJ30&#xff09; HJ21 简单密码 描述 现在有一种密码变换算法。 九键手机键盘上的数字与字母的对应&#xff1a; 1–1&#xff0c; abc–2, def–3, ghi–4, jkl–5, mno–6, pqrs–7, tuv–8 wxyz–9, 0–0&#xff0c;把密码…

Vue3.0(一):Vue的引入-options api-模板语法

Vue的引入方式 CDN方式进行引入 将以下 script标签引入即可 <script src"https://unpkg.com/vue3/dist/vue.global.js"></script><!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><met…

vscode 突然连接不上服务器了

vscode日志 ll192.168.103.5s password:]0;C:\WINDOWS\System32\cmd.exe [17:09:16.886] Got some output, clearing connection timeout [17:09:16.887] Showing password prompt [17:09:19.688] Got password response [17:09:19.688] "install" wrote data to te…

Linux下tar命令详解

tar #归档命令 格式 • Tar -参数 [args]..... 参数&#xff1a; 必选参数&#xff1a; 辅助参数&#xff1a; 额外参数&#xff1a; # 打包时排除某个文件 tar cf 文件名.tar --exclude路径/文件 路径 注&#xff1a;此处的路径前后需要保持保持一致&#xff0c;统一…