创建csmall项目
我们要搭建一个项目,用于学习各种微服务知识
搭建的过程有很多新的标准,需要我们掌握和学习
发给大家的3个csmall的项目
csmall-finish.zip:这个项目是当前学习过程中需要使用的项目,有些配置和固定的代码,可以从中复制
csmall-mobile-repo.zip:酷鲨商城前台前端项目
csmall-jsd2203.zip:酷鲨商城前台后端项目模板
业务概述
我们通过学习电商网站添加订单的业务来学习需要使用到的微服务组件
我们模拟用户选中了购物车中的商品后,点击"确认订单"按钮后的业务操作
1.如果库存足够,就减少用户购买的数量(sku表中的库存)
2.从购物车中删除用户勾选的商品
3.生成订单,将订单信息保存到数据库
我们将上面库存,购物车和订单设计为3个模块
- 库存模块:管理库存,减少库存
- 购物车模块:管理购物车,删除购物车信息
- 订单模块:新增订单
除此之外,我们还要创建一个触发新增订单业务的模块
- 业务触发模块
创建csmall父项目
创建项目名称csmall
我们微服务开发过程中,一般都会使用一个Idea中包含多个项目的形式
这个形式就是先创建一个"父项目",再在这个父项目中创建多个子项目的操作
我们首先创建一个项目:csmall
注意细节的修改
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NIsJ8DUr-1664554606707)(image-20220819094840190.png)]
上面图片next之后直接点击finish即可
首先,将当前csmall项目修剪为父项目的格式
- 删除csmall项目的src文件夹,因为父项目不写代码
- 修改pom文件
最终csmall的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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<!-- ↓↓↓↓↓ -->
<version>2.5.9</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.tedu</groupId>
<artifactId>csmall</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>csmall</name>
<description>Demo project for Spring Boot</description>
<!-- 当前项目会以一个pom文件的形式,被子项目继承使用 -->
<packaging>pom</packaging>
</project>
https://gitee.com/jtzhanghl/csmall-jsd2205.git
创建子项目
创建csmall-stock项目
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ybHVuTKY-1664554606709)(C:\Users\TEDU\Desktop\node\day02\images\image-20220819101409383.png)]
我们每次创建一个子项目之后
都要进行"父子相认"
在父项目的pom文件中,编写子项目的存在
<!-- 当前项目会以一个pom文件的形式,被子项目继承使用 -->
<packaging>pom</packaging>
<!-- 当前父项目包含的所有模块,要定义在下面的标签中,module就是模块的意思 -->
<modules>
<module>csmall-stock</module>
</modules>
还需要在子项目的pom文件中对父项目进行继承操作
父项目的第11行到第13行
复制到子项目的第6行到第8行
子项目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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.tedu</groupId>
<artifactId>csmall</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.tedu</groupId>
<artifactId>csmall-stock</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>csmall-stock</name>
<description>Demo project for Spring Boot</description>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
</dependencies>
</project>
父子相认完成
这样当前子项目就可以读取父项目中的pom文件信息了
删除stock模块src\test文件夹
父项目管理依赖版本
在我们现在使用maven添加依赖的认知中
有些依赖时必须添加版本号才能执行
有些依赖则不必添加版本号
原因是我们继承的SpringBoot(2.5.9)父项目中,定义了一些常用依赖的版本号
如果我们自己编写的父项目想定义我们项目中需要的依赖版本号的话,也是可以实现的
这样做可以统一所有子项目的版本,在更新版本时,只需要修改父项目中定义的版本号即可
父项目的pom文件添加如下内容
<!-- 在父项目中定义版本号的信息 -->
<properties>
<!-- 定义mybatis的版本号(标签名称是自定的,没有要求) -->
<mybatis.version>2.2.2</mybatis.version>
</properties>
<!-- 下面是父项目中来定义子项指定依赖时选用的版本,也称为"锁版本" -->
<!-- dependencyManagement标签中的内容,并不是添加依赖,只是指定版本 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
子项目中如果需要mybatis的依赖只需要添加如下内容即可,无需再指定版本号
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
上面的操作也称之为"锁版本"
前端Vant项目git地址
https://gitee.com/jtzhanghl/vant2205.git
包含今天笔记的csmall项目
https://gitee.com/jtzhanghl/csmall-jsd2205.git
加载正式项目pom文件
因为我们学习微服务的过程中需要很多微服务相关的依赖
这些依赖都需要在父项目中进行版本的管理的
所以我们直接使用分享给大家的完整版项目的父项目pom文件即可
父项目完整最终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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.9</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.tedu</groupId>
<artifactId>csmall</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>csmall</name>
<description>Demo project for Spring Boot</description>
<!-- 当前项目会以一个pom文件的形式,被子项目继承使用 -->
<packaging>pom</packaging>
<!-- 当前父项目包含的所有模块,要定义在下面的标签中,module就是模块的意思 -->
<modules>
<module>csmall-stock</module>
</modules>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>2020.0.3</spring-cloud.version>
<spring-cloud-alibaba.version>2.2.2.RELEASE</spring-cloud-alibaba.version>
<spring-boot.version>2.5.4</spring-boot.version>
<spring-boot-configuration-processor.version>2.3.0.RELEASE</spring-boot-configuration-processor.version>
<spring-security-jwt.version>1.0.10.RELEASE</spring-security-jwt.version>
<mybatis-spring-boot.version>2.2.0</mybatis-spring-boot.version>
<mybaits-plus.version>3.4.1</mybaits-plus.version>
<pagehelper-spring-boot.version>1.4.0</pagehelper-spring-boot.version>
<mysql.version>8.0.26</mysql.version>
<lombok.version>1.18.20</lombok.version>
<knife4j-spring-boot.version>2.0.9</knife4j-spring-boot.version>
<spring-rabbit-test.version>2.3.10</spring-rabbit-test.version>
<spring-security-test.version>5.5.2</spring-security-test.version>
<fastjson.version>1.2.45</fastjson.version>
<druid.version>1.1.20</druid.version>
<jjwt.version>0.9.0</jjwt.version>
<seata-server.version>1.4.2</seata-server.version>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<!-- 依赖管理 -->
<dependencyManagement>