【項目學習】穀粒商城學習記錄1

【項目學習】穀粒商城學習記錄1


1、linux虛擬機安裝

2、linux安裝docker

3、開發環境配置

  • IDEA安裝:-省略
  • git安裝使用:-省略
  • 項目結構創建:-就是springboot cloud那些,創捷一些module,最後改一下maven倉庫,改一下pom文件就行
  • 數據庫初始化:穀粒商城sql 注意裏面有的sql後面採用
  • 快速開發:
    • 人人開源 首先把renren-fast項目clone到我們的gulimall項目中,修改renren-fast模塊爲gulimall的子模塊
    • 數據庫運行renren-fast項目下的mysql.sql,安裝相關表
    • 修改application.yml,修改數據庫連接信息
    • 安裝前端相關工具:nodejs。
    • 下載renren-fast-vue項目,vscode打開,運行npm install安裝依賴。我的node和npm版本: (不需要完全一樣,差不多就行) 如果報錯可以多嘗試幾次,我好像用的huaweiyun的依賴庫,比較nice。
    • 下載renren-generator: 這部分沒什麼坑
  • 整合mybatis-plus加測試:
  • 生成一個微服務相關逆向代碼步驟:
      1. 首先修改renren-generator模塊中的generator.properties 文件: 修改package=com.atguigu.gulimall,moduleName=xxx(xxx表示模塊名),authoremail隨便寫寫,tablePrefix=xx_(xx_是模塊xxx對應數據庫表中的前綴,這樣寫在生成文件時可以忽略掉這些前綴)
      1. 修改application.yml中的mysql配置,將url改成jdbc:mysql://192.168.56.10:3306/gulimall_xxx?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai(xxx是當前模塊名)
      1. 運行Renrenapplication.java文件,瀏覽器打開localhost:80端口頁面,全選文件並生成代碼(注意將所有文件顯示在1頁才能正常全選)。使用下載的生成代碼中的main文件夾,替換目標模塊文件夾下的main(最好先刪除原main文件夾,再解壓生成的文件夾到目標模塊目錄下,不容易出錯)。
      1. IDEA中打開pom.xml文件,添加gulimall-common依賴。我由於前面的問題,還得添加junit jupiter api依賴。由於我前面是刪除main再解壓,所以還得手動添加上各模塊下的GulimallXxxApplication.java文件。
      1. 添加resources/application.yml文件, 配置mysql信息。
      1. 運行Application文件,使用8080端口+方法調用來驗證。

4、分佈式組件

  • spring cloud alibaba官方文檔:地址
  • 組件1:註冊中心Nacos:
      1. 修改gulimall-common的pom.xml 文件,引入 Nacos Discovery Starter。
      <dependency>
           <groupId>com.alibaba.cloud</groupId>
           <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
      </dependency>
      
      1. docker拉一個nacos:參考地址 (最好拉nacos/nacos-server:1.1.3) . 運行後訪問 ip:8848/nacos訪問nacos
      1. 註冊一個服務需要修改兩處:
      • 在微服務配置文件中配置spring.cloud.nacos.discovery.server-addr:ip地址:8848和服務名spring.application.name:gulimall-xxx
      • 在Application.java文件添加註解@EnableDiscoveryClient,然後啓動服務就行
  • 組件2:Feign 聲明式遠程調用:
    • 以member組件調用coupon的membercoupons()爲例:
    • 全局要引入feign依賴:gulimall-common引入依賴
      <!--Feign-->
      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-openfeign</artifactId>
      </dependency>
      
    • 服務端(即被調用方法端):不需要操作,只需要實現要調用的方法就行。
      @RequestMapping("/member/list")
      public R membercoupons() {
          CouponEntity couponEntity = new CouponEntity();
          couponEntity.setCouponName("買100-10");
          return R.ok().put("coupons", Arrays.asList(couponEntity));
      }
      
    • 調用端想要調用別的服務:
      • 1.開啓feign功能:Application.java添加@EnableFeignClients(basePackages = "com.atguigu.gulimall.member.feign")註解
      • 2.聲明遠程接口:(一般遠程調用都放在feign包下)編寫一個CouponFeignService接口,告訴SpringCloud這個接口需要調用遠程服務。
        @FeignClient("gulimall-coupon")
        public interface CouponFeignService {
            //把要調用的遠程方法的頭部複製過來就行
            @RequestMapping("coupon/coupon/member/list")
            public R membercoupons();
        }
        
    • 測試:在任意controller中寫下如下測試代碼,通過調用member模塊下的couponFeignService.membercoupons()遠程接口方法來遠程調用Coupon模塊下的membercoupons()方法。
      @Autowired
      CouponFeignService couponFeignService;
      
      @RequestMapping("/coupons")
      public R test(){
          MemberEntity memberEntity = new MemberEntity();
          memberEntity.setNickname("張三");
          R membercoupons = couponFeignService.membercoupons();
      
          return R.ok().put("member",memberEntity).put("coupons",membercoupons.get("coupons"));
      }
      
  • Nacos 作爲配置中心官方地址
    • 1、全局gulimall-common導入依賴
       <dependency>
           <groupId>com.alibaba.cloud</groupId>
           <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
       </dependency>
      
    • 2、新建bootstrap.properties文件,進行相關配置
      # 配置發現名
      spring.application.name=gulimall-coupon
      # 配置中心地址
      spring.cloud.nacos.config.server-addr=ip地址:8848
      
    • 3、爲配置中心默認添加數據集(Data id) gulimall-coupon.properties,默認規則:應用名.properties。我們可以將配置添加到應用名.properties
    • 4、動態獲取配置:
      • @RefreshScope: 動態獲取並刷新配置
      • @Value("${配置項名稱}"): 獲取配置值
      • 配置中心中配置優先級 > 本地配置文件中配置
    • 5、細節
      • 命名空間:用於配置隔離,默認是public(保留空間),默認新增的配置都在public中

        • 1、開發,測試,生產:利用命名空間實現環境隔離。
          注意:要在bootstrap.properties文件中配置使用的命名空間:
          spring.cloud.nacos.config.namespace=44856f1b-4db1-438c-8c42-0d4019346b4e
          
          舉例:新建三個新的命名空間,然後再prop環境中添加之前的gulimall-coupon.properties配置,並修改上面的配置文件,使用prop命名空間。重啓會發現輸出結果變成了prop環境下的配置信息。
        • 2、每一個微服務直接實現隔離配置: 每個微服務創建自己的命名空間,每個微服務只加載自己命名空間下的配置
      • 配置集:所有配置的集合

      • 配置集id: 類似於配置文件名, nacos中是Data id

      • 配置分組:默認所有配置集屬於DEFAULT_GROUP, 相當於實現了再同一命名空間下,對同一配置文件進行不同分組的區別。同樣在使用時需要在配置文件中說明使用哪個配置分組

        spring.cloud.nacos.config.group=1111
        
      • 每個微服務創建自己的命名空間,再使用配置分組區分環境

      • 同時加載多個配置集:

        • 微服務任何配置信息,任何配置文件都可以放在配置中心中
        • 只需要在bootstrp.properties中說明加載配置中心中的哪些配置文件即可
        • 以前任何springboot獲取配置文件中配置註解都能用在配置中心上。

  • 組件3:Gateway網關:
    • 1、新建一個Module:gulimall-gateway, 要選擇gateway服務,然後配置好pom.xml文件。
    • 2、開啓服務註冊發現(添加註解,配置nacos註冊中心地址)
    • 3、application.yml中添加網關規則即可實現跳轉
       spring:
         cloud:
           gateway:
             routes:
               - id: test_route
                 uri: https://www.baidu.com
                 predicates:
                   - Query=url, baidu
      
               - id: qq_route
                 uri: https://www.qq.com
                 predicates:
                   - Query=url, qq
      

5、前端基礎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章