中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

IDEA創建SpringBoot父子Module項目的實現方法

發布時間:2023-05-29 13:58:08 來源:億速云 閱讀:224 作者:栢白 欄目:開發技術

本篇文章和大家了解一下IDEA創建SpringBoot父子Module項目的實現方法。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。

目錄
  • 前言

  • 1. 軟硬件環境

  • 2. 創建 SpringBoot 項目

  • 3. 構建子 Module

  • 4. 建立父子 Module 依賴

    • 4.1 修改 Parent 項目 packaging

    • 4.2 修改 Module Pom.xml 信息

    • 4.3 刪除不必要文件

  • 5. 項目繼承關系

    • 6. 發布 WEB 服務

      前言

      作者正在籌備一個專題 《SpringCloud Alibaba 源碼解析》,會在正式發布 SpringCloud Alibaba 源碼系列文章之前,將一些準備工作先做好

      • 創建 SpringBoot 父子模塊項目

      • Docker 安裝 Nacos Server 端

      • Docker 安裝 RocketMQ 端

      • …

      本篇文章從第一步開始詳細講解如何 《創建 SpringBoot 父子模塊項目》

      如果將 SpringBoot 框架用作與單體項目,可能不存在多模塊的情況

      但是并不代表沒有,因為父子模塊并不局限于微服務,單體項目也可以進行明確的職責劃分

      如果是構建微服務項目,基本上會對模塊進行明確的劃分,比如:

      • 抽象定義公共代碼及Util封裝進行引用

      • 業務代碼進行單獨定義模塊

      • 數據庫等DB操作相關抽離單獨模塊

      • 提供外部平臺調取的接口單獨定義模塊

      • …

      上面的拆分也并非絕對,隨著架構師對于項目結構的不同理解,可能會衍生出不同的模塊

      比較經典的就是 Dubbo 將接口 API 進行抽離提供生產者接口,打為 Jar 包供消費端調用

      本篇文章也會從零到一創建 SpringBoot 父子模塊的項目,演示聚合、繼承的項目特性,并針對不引人注意的知識點進行講解

      在這里假設讀者小伙伴已經 掌握了什么是 SpringBoot 概念

      1. 軟硬件環境

      • 電腦: McaBook Pro

      • 創建項目工具: IDEA 2019.3.4

      • JDK 版本: 還能再堅持20年的 JDK8

      • Maven版本: 3.5.4

      2. 創建 SpringBoot 項目

      1)首先打開 IDEA 工具,點擊 + Create New Project

      IDEA創建SpringBoot父子Module項目的實現方法

      2)選擇 Spring Initializr(初始化),選擇Project SDK 1.8,使用默認的 SpringBoot 腳手架即可

      IDEA創建SpringBoot父子Module項目的實現方法

      大家可以訪問 Default 的網址,在這個網址中也可以進行 SpringBoot 項目的創建

      IDEA創建SpringBoot父子Module項目的實現方法

      3)創建項目詳細信息,會逐一進行講解

      IDEA創建SpringBoot父子Module項目的實現方法

      Group: 項目組織唯一的標識符,實際對應 Java 的包的結構,是 main 目錄里 Java 的目錄結構

      Group 也就是 groupId,分為多個段;一般情況下 第一段為域,第二段為公司,第三段為項目名稱

      以 Nacos 源碼進行舉例,Group 為 com.alibaba.nacos

      com 為商業組織,alibaba 為公司名稱,nacos 就是項目名稱

      Artifact: 項目的唯一的標識符,實際對應項目的名稱,就是項目根目錄的名稱

      Artifact 即為 artifactId,還是以 Nacos 舉例,因為最近在看它~

      Nacos 不同功能組件的 artifactId 各不相同,比如權限相關的子模塊就是 nacos-auth,客戶端相關是 nacos-client,具體到了項目功能組件

      Type: 分為四種不同的類型,日常我們選擇默認第一條就行,也就是 Maven Project

      Language: 開發語言的話自然就是默認的 Java

      Packaging: 打包方式,分為 War 包 和 Jar 包,這里選擇 Jar 包

      Java Version: 選擇 Java 的一個版本,再堅持 20 年的 JDK 1.8

      Version: 當前項目的一個版本,SNAPSHOT 為快照的意思

      開發時一般使用此類型,因為對于 Maven 倉庫的同步較為友好,有不同緯度的同步選擇

      Name: 定義項目名稱

      Description: 定義項目描述信息,幫助別人更好的了解項目

      Package: 定義 main.java 目錄下的結構

      最終定義項目選項及配置名稱如下,點擊 Next 按鈕繼續進行

      IDEA創建SpringBoot父子Module項目的實現方法

      4)選擇 SpringBoot 版本信息以及 Pom.xml 文件依賴組件

      這里選擇的 SpringBoot 版本是 2.2.10,選擇了 Spring Web 當作 Maven 依賴項

      后續會使用發布 Web 測試項目整體是否成功,接下來點擊 Next 繼續進行下一步

      IDEA創建SpringBoot父子Module項目的實現方法

      5)這里需要確定項目名稱以及項目的存放地址,確認無誤點擊 Finish

      IDEA創建SpringBoot父子Module項目的實現方法

      6)一個標準的 SpringBoot 項目就產生了

      IDEA創建SpringBoot父子Module項目的實現方法

      3. 構建子 Module

      1)Mac 電腦是點擊菜單欄中 File -> New -> Module,Windos 中可能會有一點差異

      IDEA創建SpringBoot父子Module項目的實現方法

      2)這里就是重復上述在創建 SpringBoot 項目時的步驟,Next 下一步

      IDEA創建SpringBoot父子Module項目的實現方法

      3)Group 與 Parent 項目保持一致即可,Artifact 修改為 Module 項目作用域名城即可

      IDEA創建SpringBoot父子Module項目的實現方法

      4)配置可按照需求進行選擇,因為不同的 Module 需要引用不同的 Pom 依賴,后面會與 Parent 保持一個交互

      IDEA創建SpringBoot父子Module項目的實現方法

      5)確認創建信息,點擊 Finish 生成項目

      IDEA創建SpringBoot父子Module項目的實現方法

      6)最終結構目錄如下,項目已成功創建,后續我們要修改其中的 Pom.xml 使其成為真正的父子項目

      IDEA創建SpringBoot父子Module項目的實現方法

      4. 建立父子 Module 依賴

      如果將建立的 Parent 項目與后面創建的 Module 產生關聯,需要改動以下幾點

      • 修改 Parent 項目 Pom.xml 的 packaging 標簽打包方式為 pom

      • 修改 Module 項目 Pom.xml 文件依賴 Parent 項目

      • 刪除不必要文件并梳理 Pom.xml 依賴上下級關系

      4.1 修改 Parent 項目 packaging

      打開 Parent 項目的根 Pom.xml 文件,新增下方代碼

      <packaging>pom</packaging>
      <modules>
          <module>bootdemo-remote-api</module>
      </modules>

      packaging 包含三個值 Jar、War、Pom,默認 Jar的方式

      首先來解釋下 packaging 為 Pom 的意思,宏觀而言即沒有代碼需要測試或者編譯,也沒有資源需要處理

      • Jar: 內部調用或作為服務進行發布使用

      • War: 需要部署的項目

      • Pom: 寓意為一個父級項目,一般作為項目聚合和依賴傳遞使用

      modules 代表了 Parent 項目下的子 Module,體現了聚合的思想

      這里把 Parent 項目的 Pom.xml 配置復制出來,幫助大家后續排查問題

      <?xml version="1.0" encoding="UTF-8"?>
      <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
          <parent>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-parent</artifactId>
              <version>2.2.10.RELEASE</version>
              <relativePath/> <!-- lookup parent from repository -->
          </parent>
          <groupId>cn.machen.bootdemo</groupId>
          <artifactId>bootdemo-parent</artifactId>
          <version>0.0.1-SNAPSHOT</version>
          <name>bootdemo-parent</name>
          <description>創建 SpringBoot 父子模塊項目</description>
          <packaging>pom</packaging>
          <modules>
              <module>bootdemo-remote-api</module>
              <module>bootdemo-biz</module>
          </modules>
          <properties>
              <java.version>1.8</java.version>
          </properties>
          <dependencies>
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-web</artifactId>
              </dependency>
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-test</artifactId>
                  <scope>test</scope>
                  <exclusions>
                      <exclusion>
                          <groupId>org.junit.vintage</groupId>
                          <artifactId>junit-vintage-engine</artifactId>
                      </exclusion>
                  </exclusions>
              </dependency>
          </dependencies>
          <build>
              <plugins>
                  <plugin>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-maven-plugin</artifactId>
                  </plugin>
              </plugins>
          </build>
      </project>

      spring-boot-maven-plugin 的作用是運行 mvn package 時會將項目打包為可運行的 jar 包,java -jar 運行即可

      如果不加這個 pluginsjava -jar xxx.jar 會報出如下錯誤

      xxx/target/bootdemo-remote-api-0.0.1-SNAPSHOT.jar中沒有主清單屬性

      4.2 修改 Module Pom.xml 信息

      創建后的 Module 項目的 Parent 信息是 SpringBoot 配置,修改后如下

      <?xml version="1.0" encoding="UTF-8"?>
      <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
          <parent>
              <groupId>cn.machen.bootdemo</groupId>
              <artifactId>bootdemo-parent</artifactId>
              <version>0.0.1-SNAPSHOT</version>
          </parent>
          <artifactId>bootdemo-remote-api</artifactId>
          <version>0.0.1-SNAPSHOT</version>
          <name>bootdemo-remote-api</name>
          <description>SpringBoot Module 項目</description>
          <properties>
              <java.version>1.8</java.version>
          </properties>
      </project>

      4.3 刪除不必要文件

      刪除 bootdemo-parent 項目下 src 包,因為 bootdemo-parent 作為聚合型項目,不會產生業務數據以及相關配置

      另外說一下 dependenciesdependencyManagement 標簽做一個講解

      dependencies

      如果 Parent 項目中使用 dependencies 標簽,標簽內的依賴默認傳遞子 Module,不用子 Module 進行顯示書寫依賴

      dependencyManagement

      dependencyManagementdependencies 不同的是,標簽內的依賴不會默認傳遞子 Module,其作用只是為了統一版本聲明

      如果子 Module 依賴 Parent 項目中 dependencyManagement 標簽內的 pom 依賴,需要顯示在子 Module 的 pom 文件中進行書寫

      5. 項目繼承關系

      我們按照《構建子 Module》章節的內容,構建出如下所述的子 Module

      <groupId>cn.machen.bootdemo</groupId>
      <artifactId>bootdemo-biz</artifactId>
      <version>0.0.1-SNAPSHOT</version>

      然后修改 bootdemo-biz 子 Module 的 Pom.xml 文件如下

      <?xml version="1.0" encoding="UTF-8"?>
      <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
          <parent>
              <groupId>cn.machen.bootdemo</groupId>
              <artifactId>bootdemo-parent</artifactId>
              <version>0.0.1-SNAPSHOT</version>
          </parent>
          <artifactId>bootdemo-biz</artifactId>
          <version>0.0.1-SNAPSHOT</version>
          <name>bootdemo-biz</name>
          <description>創建 SpringBoot 父子模塊業務 Module</description>
          <properties>
              <java.version>1.8</java.version>
          </properties>
          <dependencies>
            	<!--繼承bootdemo-remote-api項目-->
              <dependency>
                  <groupId>cn.machen.bootdemo</groupId>
                  <artifactId>bootdemo-remote-api</artifactId>
                  <version>0.0.1-SNAPSHOT</version>
              </dependency>
          </dependencies>
      </project>

      通過繼承關系的設置,bootdemo-remote-api 中的代碼就可以被 bootdemo-biz Module 項目進行引用

      6. 發布 WEB 服務

      在 Parent 項目 Pom.xml dependencies 標簽中定義了 spring-boot-starter-web 依賴,直接使用 web 相關內容即可

      我們在 bootdemo-biz 中創建 Controller 控制器

      @RestController
      public class DemoController {
          @GetMapping("/echo/{name}")
          public String sayHello(@PathVariable("name") String name) {
              return "Hello World " + name;
          }
      }

      啟動后端項目成功后,瀏覽器輸入 http://localhost:8080/echo/mahua 請求后端服務

      IDEA創建SpringBoot父子Module項目的實現方法

      以上就是IDEA創建SpringBoot父子Module項目的實現方法的簡略介紹,當然詳細使用上面的不同還得要大家自己使用過才領會。如果想了解更多,歡迎關注億速云行業資訊頻道哦!

      向AI問一下細節

      免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

      AI

      台东县| 土默特右旗| 中牟县| 乐平市| 垦利县| 赤峰市| 盱眙县| 湘潭市| 英吉沙县| 武宣县| 阿尔山市| 延安市| 芮城县| 盐源县| 中西区| 龙游县| 荥经县| 洪雅县| 印江| 恭城| 女性| 土默特左旗| 东宁县| 安庆市| 弋阳县| 揭阳市| 饶阳县| 遂溪县| 西乌珠穆沁旗| 林州市| 柳河县| 专栏| 临夏市| 固原市| 金堂县| 林口县| 华宁县| 长沙县| 吉隆县| 左云县| 营山县|