微服务分布式电商项目《谷粒商城》学习笔记-j9九游会登录

大家好!今天让小编来大家介绍下关于微服务分布式电商项目《谷粒商城》学习笔记的问题,以下是酷知号的小编对此问题的归纳整理,让我们一起来看看吧。

文章目录

    • 一、基本架构图
    • 二、配置
    • 三、项目搭建
    • 四、数据库
      • 1.开启虚拟机,在windows下通过nicat连接上
      • 2.人人开源:https://gitee.com/renrenio
    • 五、微服务-注册中心、配置中心、网关
      • 1.导入公共依赖
      • 2.配置nacos server地址
      • 3.使用 @enablediscoveryclient 注解开启服务注册与发现功能
      • 4.登录nacos
      • 5.版本确定
      • 6.openfeign远程调用
      • 7.命名空间(配置隔离)和配置分组
      • 8.gateway
  • 六、商品服务
    • (一) 分类维护
      • 1.添加商品分类信息
      • 2.前端发送请求获取商品分类信息
      • 3.配置网关路由和路径重写
      • 4.跨域解决
      • 9.mybatis-plus逻辑删除
    • (二) 品牌管理
  • 七、文件存储
    • (一)上传方式
      • 1.方式一
      • 2.方式二:推荐使用
    • (二)创建ram子账号
    • (三)整合第三方服务
    • (四)使用服务端签名后直传
    • (五)设置跨域
    • (六)添加jsr303数据校验
      • 1.jsr303数据校验
      • 2.系统错误码定义
      • 3.jsr303分组校验(多场景的复杂校验)
      • 4.自定义校验注解
      • 5.spu&sku&规格参数&销售属性
      • 6.属性分组
      • 7.品牌分组
      • 8.下载插件mybatisx
      • 9.p84的pubsub、publish
      • 10.项目配置-设置批量启动或内存设置
      • 11.采购单需求
      • 12.p100问题解决
      • 13.分布式基础篇总结

一、基本架构图

二、配置

1、安装linux虚拟机
2、下载docker容器
3、在docker容器上添加mysql和redis容器
4、windows下载redis、men、vscode、node.js、数据库、git
5、git配置github免密登录

三、项目搭建

1、在github/码云创建仓库并拉取到本地,在本地创建并且到分支develop
1)、创建仓库

2)、拉取代码

github拉取master代码

码云拉取分支feature代码

2、windows下的idea创建项目微服务
商品服务:com.atguigu.gulimall.product
仓储服务:com.atguigu.gulimall.ware
订单服务:com.atguigu.gulimall.order
会员(用户)服务:com.atguigu.gulimall.member
优惠卷服务:com.atguigu.gulimall.coupon

1)、idea打开项目

2)、新建模块(springboot版本控制在2.2.0,可创建后修改版本号2.2.0)

其他同理可得

四、数据库

1.开启虚拟机,在windows下通过nicat连接上

注意需要先将文件设置为utf-8,否则会中文乱码。

复制相应内容粘贴,运行代码

2.人人开源:https://gitee.com/renrenio

将三个项目clone到本地(记得删除.git文件再放入目录),renren-fast-vue作为前台管理系统,renren-fast和renren-generator放在gulimall项目下:
0)、renren-fast-vue
使用vscode打开renren-fast-vue项目

npm install

报错请看:
如使用npm i node-sass –sass_binary_site=https://npm.taobao.org/mirrors/node-sass
https://www.cnblogs.com/tw6668/p/12507369.html
https://blog.csdn.net/hancoder/article/details/113821646

npm run dev运行项目

1)、放入renren-fast
创建gulimall_admin数据库,然后运行sql文件。

刷新renren-fast-vue的前端页面(账号:admin、密码:admin)

即完成前后联调。

2)、导入renren-generator,用于逆向生成

把import导入的删除,注解注释。

补充:导入文件后,缺少工具类,需要从renren-fast中拿。(通过创建gulimall-common共用)

其他同理可得。

3)、公共依赖

gulimall-common添加公共依赖

<dependencies><dependency><groupid>com.baomidougroupid><artifactid>mybatis-plusartifactid><version>3.2.0version>dependency><dependency><groupid>org.projectlombokgroupid><artifactid>lombokartifactid><version>1.18.8version>dependency><dependency><groupid>org.apache.httpcomponentsgroupid><artifactid>httpcoreartifactid><version>4.4.12version>dependency><dependency><groupid>commons-langgroupid><artifactid>commons-langartifactid><version>2.6version>dependency><dependency><groupid>mysqlgroupid><artifactid>mysql-connector-jaartifactid><version>8.0.17version>dependency><dependency><groupid>jax.servletgroupid><artifactid>servlet-apiartifactid><version>2.5version><scope>providedscope>dependency>
dependencies>

gulimall-product项目及application.yml

auto表示实体id设置成自增

#application.yml
server:port: 10000
spring:datasource:username: rootpassword: rooturl: jdbc:mysql://192.168.129.129:3306/gulimall_pms?useunicode=true&characterencoding=utf-8&usessl=false&servertimezone=asia/shanghaidriver-class-name: com.mysql.cj.jdbc.driver# mapperscan
# sql映射文件位置
mybatis-plus:mapper-locations: classpath:/mapper/**/*.xmlglobal-config:db-config:id-type: auto

编写测试类

说明:
可以用shift f6修改模块名

coupon=>s 端口号:7000
member=》ums 端口号:8000
order=>oms 端口号:9000
product=》pms 端口号:10000
ware=》wms 端口号:11000
记得数据库连接要配置

五、微服务-注册中心、配置中心、网关

项目文档地址:https://github.com/alibaba/spring-cloud-alibaba/

1.导入公共依赖

https://spring.io/projects/spring-cloud-alibaba

spring-cloud-alibaba-dependencies
spring-cloud-starter-alibaba-nacos-discovery

	<dependencies><dependency><groupid>com.alibaba.cloudgroupid><artifactid>spring-cloud-starter-alibaba-nacos-discoveryartifactid>dependency>dependencies><dependencymanagement><dependencies><dependency><groupid>com.alibaba.cloudgroupid><artifactid>spring-cloud-alibaba-dependenciesartifactid><version>2.2.0.releaseversion><type>pomtype><scope>importscope>dependency>dependencies>dependencymanagement>

注:下载nacos server1.1.3的
https://github.com/alibaba/nacos/archive/refs/tags/1.1.3.zip

2.配置nacos server地址

server:port: 7000
spring:datasource:username: rootpassword: rooturl: jdbc:mysql://192.168.129.129:3306/gulimall-s?useunicode=true&characterencoding=utf-8&usessl=false&servertimezone=asia/shanghaidriver-class-name: com.mysql.cj.jdbc.drivercloud:nacos:discovery:server-addr: 127.0.0.1:8848application:name: gulimall-coupon# mapperscan
# sql映射文件位置
mybatis-plus:mapper-locations: classpath:/mapper/**/*.xmlglobal-config:db-config:id-type: auto

3.使用 @enablediscoveryclient 注解开启服务注册与发现功能

4.登录nacos

5.版本确定

版本选择:spring cloud hoxton.sr9(springcloud)=》2.2.6.release(springcloud)=》2.3.2.release(springboot)
=>1.4.2(nacos)

1.spring cloud alibaba version
地址: https://spring.io/projects/spring-cloud-alibaba=》确认 spring cloud alibaba: 2.2.6.release
2.选择spring boot version,选择 nacos version
https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明
=》确认 spring boot: 2.3.2.release
=》确认 nacos: 1.4.2

6.openfeign远程调用

声明式远程调用:编写一个接口,告诉springcloud这个接口需要远程调用

模拟远程调用

开启远程调用功能

测试结果

7.配置中心-统一处理


<dependencies><dependency><groupid>com.alibaba.cloudgroupid><artifactid>spring-cloud-starter-alibaba-nacos-configartifactid>dependency>
dependencies>

bootstrap.properties(优先级最高)优于application.yml,application.properties

点击发布

通过配置中心完成配置,无需修改文件

7.命名空间(配置隔离)和配置分组

每个微服务可以创建自己的命名空间,使用配置分组区分环境:dev,testing,prod

(1)新建命名空间

(2)配置分组

(3)bootstrap.properties配置命名空间和分组

例1:

例2:

7.加载多个配置集(从配置文件迁移到配置中心)

将application.yml的文件注释掉

测试连接

8.gateway

修改版本

<dependency><groupid>com.atguigu.gulimallgroupid><artifactid>gulimall-commonartifactid><version>0.0.1-snapshotversion>dependency>
<dependency><groupid>org.springframework.cloudgroupid><artifactid>spring-cloud-starter-gatewayartifactid><exclusions><exclusion><groupid>org.springframework.bootgroupid><artifactid>spring-boot-starter-webartifactid>exclusion>exclusions>
dependency>

开启网关服务注册和发现

配置路由转发

(一) 分类维护

1.添加商品分类信息

将pms_catelog.sql文件的插入语句导入到表里

2.前端发送请求获取商品分类信息

可配置请求端口

3.配置网关路由和路径重写

renren-fast添加服务注册

没有请求到对应路径:
http://localhost:88/api =》http://localhost:88/api/captcha.jpg

真实目标路径:http://localhost:8080/renren-fast/captcha.jpg

使用网关重写功能:即可进行访问

进行登录:产生跨域问题

4.跨域解决

4.1

中国的解决方案一:

中国的解决方案二:使用后端网关进行跨域配置

4.2

不允许有多个 ‘access-control-allow-origin’ cors =》同源策略堵塞

9.mybatis-plus逻辑删除

(二) 品牌管理

使用云存储:阿里云对象存储

(一)上传方式

1.方式一

2.方式二:推荐使用

(二)创建ram子账号

(三)整合第三方服务

(四)使用服务端签名后直传

(五)设置跨域

通过服务端加密,然后前端请求拿到相关签名数据,然后上传图片到oss

使用vue插件查看logo地址

(六)添加jsr303数据校验

1.jsr303数据校验

1)给bean添加校验注解:jax.validation.constraints,并定义自己的message提示
2)开始校验功能@valid
效果:校验错误以后会有默认的响应
3)给校验的bean后紧跟一个bindingresult,就可以获取到校验的结果

gulimall-common添加依赖

spring2.3.0及以后版本没有集成validation包,需要导入spring boot starter validation

<dependency><groupid>org.springframework.bootgroupid><artifactid>spring-boot-starter-validationartifactid>
dependency>

2.系统错误码定义

3.jsr303分组校验(多场景的复杂校验)

1)@notblank(message = “品牌名不能为空”, groups = {addgroup.class, updategroup.class})给注解标注什么情况需要进行校验
2)@validated({addgroup.class})
3) 默认没有指定分组的校验注解@notblank,在分组校验情况@validated({addgroup.class})下不生效

4.自定义校验注解

1)编写一个自定义的校验注解
2)编写一个自定义的校验器
3)关联自定义的校验器和自定义的校验注解

注意:(以及国际化相关的)
validationmessages.properties =》涉及校验注解的message默认值配置

@constraint(validateby={})=>指定用什么东西来校验,点击validatedby了解constraintvalidator,有两个方法initialize和isvalid

5.spu&sku&规格参数&销售属性

6.属性分组

在gulimall_admin删除sys_menus,重新导入

7.品牌分组

重新导入到pms_category

让分类维护恢复初始数据

8.下载插件mybatisx

9.p84的pubsub、publish

p84 关于pubsub、publish报错,无法发送查询品牌信息的请求:
1、npm install –se pubsub-js
2、在src下的main.js中引用:
① import pubsub from ‘pubsub-js’
② vue.prototype.pubsub = pubsub

如果 npm install –se pubsub-js 安装报错的话,可以试一下 cnpm install –se pubsub-js

10.项目配置-设置批量启动或内存设置

11.采购单需求

12.p100问题解决

插入sql

insert into sys_menu (menu_id, parent_id, name, url, perms, type, icon, order_num) values (76, 37, '规格维护', 'product/attrupdate', '', 2, 'log', 0);

index.js的children: []添加

{ path: '/product-attrupdate', component: _import('modules/product/attrupdate'), name: 'attr-update', meta: { title: '规格维护', istab: true } }

attrupdate.vue添加if (item.attrs != null) {}判断

13.分布式基础篇总结

以上就是小编对于微服务分布式电商项目《谷粒商城》学习笔记问题和相关问题的解答了,微服务分布式电商项目《谷粒商城》学习笔记的问题希望对你有用!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文链接:https://www.andon8.com/446229.html

网站地图