日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

微服务分布式电商项目《谷粒商城》学习笔记

發布時間:2023/12/4 综合教程 53 生活家
生活随笔 收集整理的這篇文章主要介紹了 微服务分布式电商项目《谷粒商城》学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 一、基本架構圖
    • 二、配置
    • 三、項目搭建
    • 四、數據庫
      • 1.開啟虛擬機,在windows下通過navicat連接上
      • 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、maven、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下通過navicat連接上

注意需要先將文件設置為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><!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus</artifactId><version>3.2.0</version></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version></dependency><!-- httpcomponent包。發送http請求 --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.4.12</version></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency><!--導入mysql驅動--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.17</version></dependency><!--tomcat里一般都帶--><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></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=>sms 端口號: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.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.0.RELEASE</version><type>pom</type><scope>import</scope></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-sms?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.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></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.gulimall</groupId><artifactId>gulimall-common</artifactId><version>0.0.1-SNAPSHOT</version></dependency>
<!--引入gateway網關-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId><!--排除gateway 內部不兼容的 spring-web --><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></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添加校驗注解:javax.validation.constraints,并定義自己的message提示
2)開始校驗功能@Valid
效果:校驗錯誤以后會有默認的響應
3)給校驗的bean后緊跟一個BindingResult,就可以獲取到校驗的結果

gulimall-common添加依賴

Spring2.3.0及以后版本沒有集成validation包,需要導入Spring Boot Starter Validation

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId>
</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 --save pubsub-js
2、在src下的main.js中引用:
① import PubSub from ‘pubsub-js’
② Vue.prototype.PubSub = PubSub

如果 npm install --save pubsub-js 安裝報錯的話,可以試一下 cnpm install --save 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.分布式基礎篇總結

總結

以上是生活随笔為你收集整理的微服务分布式电商项目《谷粒商城》学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。