零.
1. 業務對應的資料庫
- product -> gulimall-pms
- coupon -> gulimall-sms
- member -> gulimall-ums
- order -> gulimall-oms
- ware -> gulimall-wms
一. 人人開源
1. renren-fast-vue: 前台
- renren-fast-vue
https://www.jianshu.com/p/2be02670484e
2. renren-fast: 背景
- 檢視
application.yml
配置檔案中調用的環境
谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理) - 在對應的環境中修改資料源資訊
spring: datasource: type: com.alibaba.druid.pool.DruidDataSource druid: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://www.jiangfengtime.top:3307/gulimall_admin?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai username: root password: 123456
谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理) -
在資料庫中建立所需的資料庫
谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理)
3. renren-generator代碼生成器
1. 代碼生成
- 下載下傳
- 導入項目
-
配置
谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理) 谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理) -
啟動項目
啟動後通過浏覽器通路:
localhost:80
就是代碼生成器的可視化界面
谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理) - 點選生成代碼, 就會下載下傳所生成的代碼, 把main目錄下的代碼拷貝到指定的子產品中即可
谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理)
2. 相關包引入
由于此時還有很多的包沒有引入, 是以還需要引入所需的包
- 建立一個公共子產品, 用于引入公共的配置
- 解決dao層的缺少的依賴, 引入mybatis-plus
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency>
- 解決en’tity層缺少的依賴, 引入lombok
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.20</version> </dependency>
-
引入service缺少的工具類
谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理) 去之前導入的renren-fast項目中導入對應的公共類
谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理) - 引入R後, R中會報錯, 還需要引入
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.14</version> </dependency>
- 引入Query後, Query會報錯 還需要引入
谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理)
<dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency>
谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理) - 此時隻有controller層報錯
谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理) 這個是和權限控制相關的注解, 現在還用不到可以去代碼生成器中将這些注解注釋掉
谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理) - 然後重新使用代碼生成器生成相關代碼, 導入到項目即可
2. nacos注冊中心
- 下載下傳nacos伺服器并啟動
- 下載下傳位址: https://github.com/alibaba/nacos/releases
- 啟動
谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理) - 引入maven依賴
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
- 在application.yml中配置
# 配置nacos的服務位址
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
# 為每個服務設定一個服務名, 如果不配置則看不到
application:
name: gulimall-coupon
- 在啟動類中添加注解
- web ui頁面:
http://localhost:8848/nacos/
谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理)
3. 內建Feign
- 引入openFeign依賴
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
-
編寫一個接口, 告訴SpringCloud這個接口需要調用遠端服務
如果要在member子產品中遠端調用coupon中的方法, 則需要在member中建立一個接口方法, 用于指定該方法對應的遠端調用發服務名和其對應的方法
/** * 指定遠端調用的服務名 */ @FeignClient("gulimall-coupon") public interface CouponFeignService { /** * 如果本子產品中調用接口中的目前方法, 就會去注冊中心找 * "gulimall-coupon"中的"/coupon/coupon/member/list"方法 * * @return */ @RequestMapping("/coupon/coupon/member/list") public R memberCoupons(); }
- 在啟動類中開啟遠端調用
@SpringBootApplication @EnableDiscoveryClient // 開啟Nacos服務 // 開啟Feign服務, 并指定遠端調用接口的全路徑包名 @EnableFeignClients(basePackages = "com.hjf.gulimall.member.feign") public class GulimallMemberApplication { public static void main(String[] args) { SpringApplication.run(GulimallMemberApplication.class, args); } }
4. nacos配置中心
1. 配置
通過@value注解可以讀取配置檔案中的内容, 但是如果要修改配置檔案中的内容則需要重新啟動服務, 是以可以通過nacos來動态配置
- 引入nacos作為配置中心的依賴
<!-- 配置中心來做配置管理 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
- 在項目中建立
配置檔案, 并在配置檔案中指定服務名稱和配置中心的位址bootstrap.properties
spring.application.name=gulimall-coupon spring.cloud.nacos.config.server-addr=127.0.0.1:8848
谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理) -
nacos配置中建立配置檔案
啟動項目時日志檔案中可以看見項目加載一個日志檔案, 檔案名:
應用名.properties
谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理) 谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理) Data ID 就是配置檔案的名稱
谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理) - 在項目的controller中添加自動重新整理的注解
@RefreshScope
, 以及通過@Value來動态擷取配置檔案中的值
谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理) - 此時隻要修改配置中心中的配置檔案内容, 就可以動态的修改其配置内容
2. nacos細節
1. 命名空間
- 命名空間: 配置隔離,
- 預設是調用
命名空間的配置檔案public
-
調用指定命名空間
檢視命名空間對應的id
谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理) - 在配置檔案中指定生效命名空間的id
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
# 指定命名空間
spring.cloud.nacos.config.namespace=80535f37-eaa4-4b2f-b43d-471c54f63eee
# 指定分組
spring.cloud.nacos.config.group=test
- 可以利用命名空間為不同的業務場景生成特定的配置檔案. 如: 開發, 測試, 生産
- 每個微服務之間互相隔離配置, 每個微服務都建立自己的命名空間, 隻加載自己命名空間下的所有配置
2. 配置分組
- 預設所有的配置集都屬于: DEFAULT_GROUP
- 指定分組
spring.application.name=gulimall-coupon spring.cloud.nacos.config.server-addr=127.0.0.1:8848 # 指定命名空間 spring.cloud.nacos.config.namespace=80535f37-eaa4-4b2f-b43d-471c54f63eee # 指定分組 spring.cloud.nacos.config.group=test
3. 同時加載多個資料集
-
将配置檔案拆分成多個配置檔案
谷粒商城項目實戰——01前期工作(寫得比較亂, 後期需要重新整理) - 在
中進行配置指定bootstrap.properties
spring.application.name=gulimall-coupon spring.cloud.nacos.config.server-addr=127.0.0.1:8848 # 指定命名空間 spring.cloud.nacos.config.namespace=d77d0c77-269f-4cac-8984-21ec5ad40410 # 第一個配置檔案的名稱, 組别, 是否動态更改 spring.cloud.nacos.config.ext-config[0].data-id=datasource.yml spring.cloud.nacos.config.ext-config[0].group=dev spring.cloud.nacos.config.ext-config[0].refresh=true # 第二個配置檔案的名稱, 組别, 是否動态更改 spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml spring.cloud.nacos.config.ext-config[1].group=dev spring.cloud.nacos.config.ext-config[1].refresh=true # 第三個配置檔案的名稱, 組别, 是否動态更改 spring.cloud.nacos.config.ext-config[2].data-id=other.yml spring.cloud.nacos.config.ext-config[2].group=dev spring.cloud.nacos.config.ext-config[2].refresh=true
5. gateway網關
- 引入依賴
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency>
-
配置檔案application.properties
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.application.name=gulimall-gateway server.port=88
- nacos中的配置資訊
spring: application: name: gulimall-gateway
-
bootstrap.yml
spring.application.name=gulimall-coupon spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.namespace=e498c541-4f0c-4ea4-92fc-15a05052517a spring.cloud.nacos.config.group=dev
- 配置路由規則
application.yml
spring: cloud: gateway: routes: - id: baidu_route uri: https://www.baidu.com predicates: - Query=url,baidu - id: qq_route uri: https://www.qq.com predicates: - Query=url,qq