项目架构图
安装虚拟机,配置网络
参考使用VMware15安装镜像CentOS-7-x86_64-DVD-1511.iso,并设置Linux网络
安装 Docker,安装 Redis,MySQL
MySQL导入,导出
Git安装,IDEA集成
参考Git 安装,Windows,Linux
IDEA使用设置—集成 Git
Maven 下载,安装,IDEA集成
参考Maven小总结
IDEA 安装 lombok 插件
注册码云,创建仓库
1、注册码云https://gitee.com/
2、创建仓库
设置公钥
1、随便找一个地方,鼠标右键,选择Git Bash Here
2、执行命令
1 | # 设置用户名,随便定义 |
导入git项目
创建 modules 子模块
1 | Group:io.gitee.taopanfeng |
创建父 pom.xml
1 |
|
修改 .gitignore
1 | **/mvnw |
提交第一次代码
1 | Ctrl + K:本地 -> 暂存区(网页端不会更新) |
创建 5 个数据库
创建数据库:
- gulimall_oms
- gulimall_pms
- gulimall_sms
- gulimall_ums
- gulimall_wms
我已经把这五个数据库的 SQL 汇总成一个 SQL文件,直接执行即可。
SQL文件在:gulimall_opsuw_ms.sql
修改容器自启动 –restart always
1 | docker update redis01 --restart always |
导入 renren-fast
1、找一个目录右键Git Bash Here
,执行下面两行命令
1 | git clone https://gitee.com/renrenio/renren-fast.git |
2、删除目录的 .git 文件
3、把下载好的renren-fast
文件夹拖到我们项目根目录下
4、修改父 pom,添加 modules 标签,并刷新 maven
1 | <modules> |
创建数据库 gulimall-admin
1、创建 DB
2、 导入 SQL 文件(renren-fast/db/mysql.sql)
修改 renren-fast 配置
1、修改 Redis,MySQL
2、此时,启动访问会报错,因为后台没有启动,也就是renren-fast-vue
安装 Node js
创建 renren-fast-vue
1、导入项目https://gitee.com/renrenio/renren-fast-vue.git
2、安装依赖
3、启动renren-fast-vue
4、启动renren-fast
5、测试访问
前端点击“验证码”,后端就会打印日志信息
使用admin
admin
可以进行登录
导入 renren-generator
代码生成器~
1、打开Git Bash
,执行git clone https://gitee.com/renrenio/renren-generator.git
2、进入克隆后的文件夹,删除.git
目录
3、把renren-generator
放入renren-fast
后端根目录
4、修改父 pm.xml
1 | <modules> |
5、generator.properties 若为乱码,记得修改一下。参考:出现错误:解决IDEA的properties文件\uxxxx中文乱码问题
创建 gulimall-common
1)、创建 maven 模块:gulimall-common
2)、gulimall-common 添加依赖
1 | <dependencies> |
3)、给“gulimall-common”创建目录,io.gitee.taopanfeng.common
把“renren-fast”中的文件复制到“gulimall-common”中,如下这样。
pms:product
1)、添加common模块依赖
1 | <dependency> |
2)、修改“renren-generator”
1 | ### 1. 修改连接数据库 renren-generator/src/main/resources/application.yml |
3)、运行“renren-generator”,访问:http://localhost/
4)、生成代码文件,把main直接拖到 product 中
测试一波
1)、给所依赖的common 模块添加依赖。(上面已经添加过了)
1 | <!--mybatis-plus--> |
2)、product 主类添加@MapperScan注解,扫描 dao 包。(生成的 dao 包中的文件都有 @Mapper 注解了,可以不用写了。)
3)、product 添加application.yml文件,编写配置
1 | spring: |
4)、在 product test 测试类中
1 |
|
sms:coupon
0)、修改“renren-generator”
1 | ### 1. 修改连接数据库 renren-generator/src/main/resources/application.yml |
1)、添加common模块依赖
1 | <dependency> |
2)、主类添加@MapperScan(“io.gitee.taopanfeng.coupon.dao”)(生成的 dao 包中的文件都有 @Mapper 注解了,可以不用写了。)
3)、编写配置文件
1 | spring: |
4)、测试访问:http://localhost:8080/coupon/coupon/list
ums:member
0)、修改“renren-generator”
1 | ### 1. 修改连接数据库 renren-generator/src/main/resources/application.yml |
1)、添加common模块依赖
1 | <dependency> |
2)、主类添加@MapperScan(“io.gitee.taopanfeng.member.dao”)(生成的 dao 包中的文件都有 @Mapper 注解了,可以不用写了。)
3)、编写配置文件
1 | spring: |
4)、测试访问:http://localhost:8080/member/growthchangehistory/list
oms:order
0)、修改“renren-generator”
1 | ### 1. 修改连接数据库 renren-generator/src/main/resources/application.yml |
1)、添加common模块依赖
1 | <dependency> |
2)、主类添加@MapperScan(“io.gitee.taopanfeng.order.dao”)(生成的 dao 包中的文件都有 @Mapper 注解了,可以不用写了。)
3)、编写配置文件
1 | spring: |
4)、测试访问:http://localhost:8080/order/order/list
wms:ware
0)、修改“renren-generator”
1 | ### 1. 修改连接数据库 renren-generator/src/main/resources/application.yml |
1)、添加common模块依赖
1 | <dependency> |
2)、主类添加@MapperScan(“io.gitee.taopanfeng.ware.dao”)(生成的 dao 包中的文件都有 @Mapper 注解了,可以不用写了。)
3)、编写配置文件
1 | spring: |
4)、删除6个UndoLogxxx文件
5)、测试访问:http://localhost:8080/ware/purchase/list
修改端口号
1 | coupon 7000 |
统一版本管理
修改common模块:下面是依赖管理,相当于以后再dependencies里引spring cloud alibaba就不用写版本号, 全用dependencyManagement进行管理
1 | <dependencyManagement> |
Nacos 安装
启动 Nacos Server,参考:Docker 启动 Nacos
coupon 注册 Nacos
1)、在 common 模块中添加依赖
1 | <!--nacos-discovery--> |
2)、在 coupon 主类添加 @EnableDiscoveryClient
3)、修改 coupon 模块配置(需要指定 Nacos 注册地址,还要指定服务名称)
1 | spring: |
4)、访问:Nacos 服务列表
member 注册 Nacos
1)、在 member 主类添加 @EnableDiscoveryClient
2)、修改 member 模块配置(需要指定 Nacos 注册地址,还要指定服务名称)
1 | spring: |
3)、访问:Nacos 服务列表
OpenFeign测试远程调用
可能会由于 SpringCloud 版本问题,造成远程调用失败~
解决方法参考:OpenFeign 启动失败…
spring-cloud-starter-openfeign 是一个声明式的HTTP客户端,他的目的就是让远程调用更加简单。给远程服务发的是HTTP请求。
会员服务想要远程调用优惠券服务,只需要给会员服务里引入openfeign依赖,他就有了远程调用其他服务的能力。
0)、确保SpringCloud版本正确,参考:OpenFeign 启动失败…
1)、CouponController 添加远程调用方法
1 | /** |
2)、member 模块添加 OpenFeign 依赖(项目创建时我们已经添加了)
1 | <dependency> |
3)、修改 member 主类添加 @EnableFeignClients(“io.gitee.taopanfeng.member.feign”)
4)、member 模块中,创建包“feign”,创建一个接口
提示:如果 member 主类 @EnableFeignClients 不指定包名,那么 @FeignClient(“gulimall-coupon”) 就要配合 @Component 一起使用。
1 | /** |
5)、修改 MemberController,测试远程调用
1 |
|
6)、开启 Nacos Server,启动 coupon 7000,member 8000
访问:http://127.0.0.1:8000/member/member/coupons
7)、OpenFeign 调用流程
8)、注意点
1 | 1. @FeignClient("gulimall-coupon") 要调用哪个服务 |
9)、关闭 coupon 7000提供者,此时再访问会报错;再启动 coupon 7000提供者,访问再次成功~!
Nacos 配置中心
》》》测试读取本地配置《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《
1)、coupon 模块 application.yml 添加
1 | coupon: |
2)、CouponController 中添加
1 | "${coupon.user.name}") ( |
3)、测试访问:http://127.0.0.1:7000/coupon/coupon/testNacosConfig
》》》测试读取配置中心《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《
0)、common 模块添加依赖
1 | <!--服务 配置中心--> |
1)、coupon 模块添加 bootstrap.yml(注意:是 bootstrap 而不是 application)【bootstrap 用于配置中心】
1 | spring: |
2)、启动 coupon 7000,查看控制台“ dataId=gulimall-coupon.properties, group=DEFAULT_GROUP, cnt=1”,
也就是说,默认类型为应用名.properties
,group=DEFAULT_GROUP
3)、创建 Nacos 配置
4)、重启应用,再次测试访问:http://127.0.0.1:7000/coupon/coupon/testNacosConfig
》会发现,配置中心的会覆盖我们本地原有的配置。
5)、如果想一直刷新,给所用到的 Controller 加上 @RefreshScope 注解即可。
》无需重启应用,配置中心修改后,应用即刷新。
Namespace,Group
1 | 1)、命名空间:配置隔离; |
1)、创建命名空间
2)、创建组
3)、修改 coupon 模块 bootstrap.yml
1 | spring: |
4)、再次测试访问:http://127.0.0.1:7000/coupon/coupon/testNacosConfig
Nacos 多配置集
Gateway 介绍
发送请求需要知道商品服务的地址,如果商品服务器有3台耗服务器,1号掉线后,还得改,所以需要网关动态地管理,他能从注册中心中实时地感知某个服务上线还是下线。
请求也要加上询问权限,看用户有没有权限访问这个请求,也需要网关。
所以我们使用spring cloud的gateway组件做网关功能。
网关是请求浏览的入口,常用功能包括路由转发,权限校验,限流控制等。springcloud gateway取到了zuul网关。
spring-cloud-gateway 官网
spring-cloud-gateway 2.2.x 文档
1 | # Spring Cloud Gateway功能: |
三大核心概念:
Route: 发一个请求给网关,网关要将请求路由到指定的服务。路由有id,目的地uri,断言的集合,匹配了断言就能到达指定位置,
Predicate断言: 就是java里的断言函数,匹配请求里的任何信息,包括请求头等
Filter: 过滤器请求和响应都可以被修改。
工作流程:“客户端发请求给服务端。中间有网关。先交给映射器,如果能处理就交给handler处理,然后交给一系列filer,然后给指定的服务,再返回回来给客户端。”
Gateway 使用
1)、创建模块 gulimall-gateway
2)、添加依赖
1 | <dependency> |
3)、gateway 主类上添加注解 @EnableDiscoveryClient
4)、添加 application.yml 配置
1 | server: |
5)、创建命名空间 gateway,并在gateway 命名空间下创建配置
1 | DATA ID:gulimall-gateway.yml |
6)、添加 bootstrap.yml 配置
1 | spring: |
7)、启动之后,访问:http://localhost:88/?url=baidu 或 http://localhost:88/?url=qq
项目版本问题
0)、具体可参考:修改所有 pom.xml
1)、在父pom中添加“SpringBoot,SpringCloud,SpringCloud-Alibaba”版本,这样子模块就不用写版本了。
1 | <!-- 统一管理jar包版本 --> |
2)、所有的子模块,继承父模块(如下代码)。还要删除“SpringBoot,SpringCloud,SpringCloud-Alibaba”版本。
1 | <parent> |
项目架构图
前端 2021-01-08 15:28:20
前后端对比
ES6
参考:ES6 再学习
Vue
参考:Vue 再学习