开发微服务电商项目演示(一)

news/2025/3/31 12:50:02/

从本期开始为大家讲解一个微服务电商项目的一个开发过程 其中包括以下等技术

1.项目框架及多模块开发
2.mybatis与微服务注册
3.服务调用&分布式session
4.网关服务限流熔断降级&分布式事务
5.商品秒杀展示
6.商品秒杀接口测压及优化
7.消息推送
8.分布式锁

一.项目模式

电商模式:市面上有5种常见的电商模式,B2B(商家对商家)、B2C(商家对客户)、 C2B(客户对商家)、 C2C(商家对商家)、O2O(线上对线下);
1、B2B模式B2B (Business to Business),是指 商家与商家建立的商业关系。如:阿里巴巴
2、B2C 模式B2C (Business to Consumer),就是我们经常看到的供应商直接把商品卖给用户,即“商对客”模式,也就是通常说的商业零售,直接面向消费者销售产品和服务。如:苏宁易购、京东、天猫、小米商城
3、C2B模式C2B(CustomertoBusiness),即消费者对企业。先有消费者需求产生而后有企业生产,即先有消费者提出需求,后有生产企业按需求组织生产
4、C2C模式C2C (Customer to Consumer),客户之间自己把东西放上网去卖,如:淘宝,闲鱼
5、O2O模式O2O即Online To Ofline,也即将线下商务的机会与互联网结合在了一起,让互联网成为线下交易的前台。线上快速支付,线下优质服务。如:饿了么,美团,淘票票,京东到家

二.技术栈

  • 前端 html css js jquery freemarker vue

  • 基础 javaSE javaEE

  • 框架 spring springMVC springBoot mybatis mybatis-plus

  • 安全 shiro(spring security)

  • 微服务 springCloud springCloud alibaba

  • 数据库 mysql

  • 测试 junit jmeter

三.项目架构图

图一

图二

四.模块

五.案例演示

主模块

  1. 在idea中基于maven方式创建主模块zmall,创建成功之后删除src目录即可。

  1. 配置主模块pom.xml

2.1 依赖版本锁定

<!--依赖版本的锁定-->
<properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.3.2.RELEASE</spring-boot.version><spring-cloud.version>Hoxton.SR9</spring-cloud.version><spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version>
</properties>

2.2 dependencyManagement配置

<dependencyManagement><dependencies><!-- SpringBoot 依赖配置 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!--spring-cloud依赖配置--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!--spring-cloud-alibaba依赖配置--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

2.3 子模块定义

<modules><module>zmall-common</module><module>zmall-user</module>
</modules>

2.4 设置maven编译版本

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration>
</plugin>

zmall-common子模块

  1. 基于maven方式创建zmall-common公共子模块。注:zmall-common公共模块只为其他模块提供依赖支持。

  1. 配置pom.xml

<dependencies><!-- mybatis plus依赖 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.0</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.44</version><scope>runtime</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.56</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency>
</dependencies>

zmall-user子模块

  1. 基于Spring Initialzr方式创建zmall-user用户模块。

  1. 配置pom.xml。设置父模块,并添加zmall-common公共模块的依赖支持。

<!-- 父模块 -->
<parent><groupId>com.zking.zmall</groupId><artifactId>zmall</artifactId><version>1.0-SNAPSHOT</version>
</parent>
<dependencies><dependency><groupId>com.zking.zmall</groupId><artifactId>zmall-common</artifactId><version>1.0-SNAPSHOT</version></dependency>
</dependencies>
  1. 添加登录页面及公共资源(js/css/images)

1)我将资料目录中的《易买网网页素材.zip》解压后,将其中Login.html和js/css/images等等添加到项目的templates和static目录下,最好请将Login.html重命名为login.html

2)导入资料目录中的common目录到项目的templates目录下

3)在login.html页面中的头部申明<!DOCTYPE html ....>修改成<!DOCTYPE html>(支持H5风格)

4)在login.html页面中通过<#include>指令引入common目录中的head.html

<#include 'common/head.html'>

5)创建UserController并定义login.html页面跳转方式

@Controller
public class UserController {@RequestMapping("/login.html")public String login(){return "login";}
}

zmall-user结构如下

4.配置application.yml

server:port: 8010
spring:application:name: zmall-userdatasource:#type连接池类型 DBCP,C3P0,Hikari,Druid,默认为Hikari,HikariDataSource属于Mybatisplus依赖type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/zmall?useUnicode=true&characterEncoding=UTF-8&useSSL=falseusername: rootpassword: 1234freemarker:suffix: .htmltemplate-loader-path: classpath:/templates/mvc:static-path-pattern: /static/**

最终的效果图


http://www.ppmy.cn/news/22917.html

相关文章

Apollo搭建使用

Apollo的执行过程 Apollo的原理 Client&#xff08;Java应用端&#xff09;通过域名访问Meta Server获取Config Service服务列表&#xff08;IPPort&#xff09;&#xff0c;而后直接通过IPPort访问服务&#xff0c;同时在Client侧会做load balance、错误重试 Apollo的引入 1…

【论文速递】NAACL2022- 文档级事件论元抽取的双流AMR增强模型

【论文速递】NAACL2022- 文档级事件论元抽取的双流AMR增强模型 代码&#xff1a;RunxinXu/TSAR: Source code for “A Two-Stream AMR-enhanced Model for Document-level Event Argument Extraction” NAACL 2022 (github.com) 论文&#xff1a;[2205.00241] A Two-Stream A…

前端食堂技术周刊第 69 期:第 94 次 TC39 会议、Interop 2023、1 月登陆 Web 平台的新功能、Deno in 2022

美味值&#xff1a;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f; 口味&#xff1a;暖枣枸杞汁 食堂技术周刊仓库地址&#xff1a;https://github.com/Geekhyt/weekly 本期摘要 第 94 次 TC39 会议Interop 20231 月登陆 Web 平台的新功能Deno in 202…

Vue 项目如何实现一个全局菜单搜索框

✨ 个人主页&#xff1a;山山而川~xyj ⚶ 作者简介&#xff1a;前端领域新星创作者&#xff0c;专注于前端各领域技术&#xff0c;共同学习共同进步&#xff0c;一起加油&#xff01; &#x1f386; 系列专栏&#xff1a; Vue 系列 &#x1f680; 学习格言&#xff1a;与其临渊…

字段校验 参数校验 @Valid

实体字段校验 NotNull、NotEmpty、NotBlank 1.NotNull 不能为 null&#xff0c;但可以为 empty&#xff0c;一般用在 Integer 类型的基本数据类型的非空校验上&#xff0c;而且被其标注的字段可以使用 size、Max、Min 对字段数值进行大小的控制 2.NotEmpty 不能为 null&…

Apple EE 面试经验

今天参加了 Apple EE 的面试。 上周&#xff0c;收到了来自 Apple HR 电话面试。后来过了三天左右&#xff0c;HR给我安排了这周和 Manager 的一对一面试。 面试流程分为两大部分&#xff1a; 用英语做自我介绍。并用英语介绍近几年做过的印象最深刻的项目或事情&#xff0c;…

LeetCode-Kotlin-Array-EASY-11至20题

11-Contains Duplicate II 题目大意 如果数组里面有重复数字&#xff0c;并且重复数字的下标差值小于等于 K 就输出 true&#xff0c;如果没有重复数字或者下标差值超过了 K &#xff0c;则输出 flase。 解题思路 这道题可以维护一个只有 K 个元素的 map&#xff0c;每次只…

【算法数据结构初阶篇】:105. 从前序与中序遍历序列构造二叉树

LeetCode:105. 从前序与中序遍历序列构造二叉树核心点&#xff1a;1.前序遍历&#xff1a;根左右 &#xff1b;中序遍历&#xff1a;左根右2.从前序遍历中的子树preorder&#xff0c;第一个元素即为根节点&#xff0c;创建出根节点head,最后用来返回3.接着就从中序遍历中的子树…