黄色电影一区二区,韩国少妇自慰A片免费看,精品人妻少妇一级毛片免费蜜桃AV按摩师 ,超碰 香蕉

IDEA創(chuàng)建SpringBoot父子Module項(xiàng)目的實(shí)現(xiàn)方法

idea創(chuàng)建springboot父子module項(xiàng)目的實(shí)現(xiàn)方法

本文講解"idea創(chuàng)建springboot父子module項(xiàng)目的實(shí)現(xiàn)方法",希望能夠解決相關(guān)問(wèn)題。

目錄
  • 前言

  • 1. 軟硬件環(huán)境

  • 2. 創(chuàng)建 springboot 項(xiàng)目

  • 3. 構(gòu)建子 module

  • 4. 建立父子 module 依賴(lài)

    • 4.1 修改 parent 項(xiàng)目 packaging

    • 4.2 修改 module pom.xml 信息

    • 4.3 刪除不必要文件

  • 5. 項(xiàng)目繼承關(guān)系

  • 6. 發(fā)布 web 服務(wù)

前言

作者正在籌備一個(gè)專(zhuān)題 《springcloud alibaba 源碼解析》,會(huì)在正式發(fā)布 springcloud alibaba 源碼系列文章之前,將一些準(zhǔn)備工作先做好

  • 創(chuàng)建 springboot 父子模塊項(xiàng)目

  • docker 安裝 nacos server 端

  • docker 安裝 rocketmq 端

  • …

本篇文章從第一步開(kāi)始詳細(xì)講解如何 《創(chuàng)建 springboot 父子模塊項(xiàng)目》

如果將 springboot 框架用作與單體項(xiàng)目,可能不存在多模塊的情況

但是并不代表沒(méi)有,因?yàn)楦缸幽K并不局限于微服務(wù),單體項(xiàng)目也可以進(jìn)行明確的職責(zé)劃分

如果是構(gòu)建微服務(wù)項(xiàng)目,基本上會(huì)對(duì)模塊進(jìn)行明確的劃分,比如:

  • 抽象定義公共代碼及util封裝進(jìn)行引用

  • 業(yè)務(wù)代碼進(jìn)行單獨(dú)定義模塊

  • 數(shù)據(jù)庫(kù)等db操作相關(guān)抽離單獨(dú)模塊

  • 提供外部平臺(tái)調(diào)取的接口單獨(dú)定義模塊

  • …

上面的拆分也并非絕對(duì),隨著架構(gòu)師對(duì)于項(xiàng)目結(jié)構(gòu)的不同理解,可能會(huì)衍生出不同的模塊

比較經(jīng)典的就是 dubbo 將接口 api 進(jìn)行抽離提供生產(chǎn)者接口,打?yàn)?jar 包供消費(fèi)端調(diào)用

本篇文章也會(huì)從零到一創(chuàng)建 springboot 父子模塊的項(xiàng)目,演示聚合、繼承的項(xiàng)目特性,并針對(duì)不引人注意的知識(shí)點(diǎn)進(jìn)行講解

在這里假設(shè)讀者小伙伴已經(jīng) 掌握了什么是 springboot 概念

1. 軟硬件環(huán)境

  • 電腦: mcabook pro

  • 創(chuàng)建項(xiàng)目工具: idea 2019.3.4

  • jdk 版本: 還能再堅(jiān)持20年的 jdk8

  • maven版本: 3.5.4

2. 創(chuàng)建 springboot 項(xiàng)目

1)首先打開(kāi) idea 工具,點(diǎn)擊 + create new project

idea創(chuàng)建springboot父子module項(xiàng)目的實(shí)現(xiàn)方法

2)選擇 spring initializr(初始化),選擇project sdk 1.8,使用默認(rèn)的 springboot 腳手架即可

idea創(chuàng)建springboot父子module項(xiàng)目的實(shí)現(xiàn)方法

大家可以訪問(wèn) default 的網(wǎng)址,在這個(gè)網(wǎng)址中也可以進(jìn)行 springboot 項(xiàng)目的創(chuàng)建

idea創(chuàng)建springboot父子module項(xiàng)目的實(shí)現(xiàn)方法

3)創(chuàng)建項(xiàng)目詳細(xì)信息,會(huì)逐一進(jìn)行講解

idea創(chuàng)建springboot父子module項(xiàng)目的實(shí)現(xiàn)方法

group: 項(xiàng)目組織唯一的標(biāo)識(shí)符,實(shí)際對(duì)應(yīng) java 的包的結(jié)構(gòu),是 main 目錄里 java 的目錄結(jié)構(gòu)

group 也就是 groupid,分為多個(gè)段;一般情況下 第一段為域,第二段為公司,第三段為項(xiàng)目名稱(chēng)

以 nacos 源碼進(jìn)行舉例,group 為 com.alibaba.nacos

com 為商業(yè)組織,alibaba 為公司名稱(chēng),nacos 就是項(xiàng)目名稱(chēng)

artifact: 項(xiàng)目的唯一的標(biāo)識(shí)符,實(shí)際對(duì)應(yīng)項(xiàng)目的名稱(chēng),就是項(xiàng)目根目錄的名稱(chēng)

artifact 即為 artifactid,還是以 nacos 舉例,因?yàn)樽罱诳此?/p>

nacos 不同功能組件的 artifactid 各不相同,比如權(quán)限相關(guān)的子模塊就是 nacos-auth,客戶(hù)端相關(guān)是 nacos-client,具體到了項(xiàng)目功能組件

type: 分為四種不同的類(lèi)型,日常我們選擇默認(rèn)第一條就行,也就是 maven project

language: 開(kāi)發(fā)語(yǔ)言的話自然就是默認(rèn)的 java

packaging: 打包方式,分為 war 包 和 jar 包,這里選擇 jar 包

java version: 選擇 java 的一個(gè)版本,再堅(jiān)持 20 年的 jdk 1.8

version: 當(dāng)前項(xiàng)目的一個(gè)版本,snapshot 為快照的意思

開(kāi)發(fā)時(shí)一般使用此類(lèi)型,因?yàn)閷?duì)于 maven 倉(cāng)庫(kù)的同步較為友好,有不同緯度的同步選擇

name: 定義項(xiàng)目名稱(chēng)

description: 定義項(xiàng)目描述信息,幫助別人更好的了解項(xiàng)目

package: 定義 main.java 目錄下的結(jié)構(gòu)

最終定義項(xiàng)目選項(xiàng)及配置名稱(chēng)如下,點(diǎn)擊 next 按鈕繼續(xù)進(jìn)行

idea創(chuàng)建springboot父子module項(xiàng)目的實(shí)現(xiàn)方法

4)選擇 springboot 版本信息以及 pom.xml 文件依賴(lài)組件

這里選擇的 springboot 版本是 2.2.10,選擇了 spring web 當(dāng)作 maven 依賴(lài)項(xiàng)

后續(xù)會(huì)使用發(fā)布 web 測(cè)試項(xiàng)目整體是否成功,接下來(lái)點(diǎn)擊 next 繼續(xù)進(jìn)行下一步

idea創(chuàng)建springboot父子module項(xiàng)目的實(shí)現(xiàn)方法

5)這里需要確定項(xiàng)目名稱(chēng)以及項(xiàng)目的存放地址,確認(rèn)無(wú)誤點(diǎn)擊 finish

idea創(chuàng)建springboot父子module項(xiàng)目的實(shí)現(xiàn)方法

6)一個(gè)標(biāo)準(zhǔn)的 springboot 項(xiàng)目就產(chǎn)生了

idea創(chuàng)建springboot父子module項(xiàng)目的實(shí)現(xiàn)方法

3. 構(gòu)建子 module

1)mac 電腦是點(diǎn)擊菜單欄中 file -> new -> module,windos 中可能會(huì)有一點(diǎn)差異

idea創(chuàng)建springboot父子module項(xiàng)目的實(shí)現(xiàn)方法

2)這里就是重復(fù)上述在創(chuàng)建 springboot 項(xiàng)目時(shí)的步驟,next 下一步

idea創(chuàng)建springboot父子module項(xiàng)目的實(shí)現(xiàn)方法

3)group 與 parent 項(xiàng)目保持一致即可,artifact 修改為 module 項(xiàng)目作用域名城即可

idea創(chuàng)建springboot父子module項(xiàng)目的實(shí)現(xiàn)方法

4)配置可按照需求進(jìn)行選擇,因?yàn)椴煌?module 需要引用不同的 pom 依賴(lài),后面會(huì)與 parent 保持一個(gè)交互

idea創(chuàng)建springboot父子module項(xiàng)目的實(shí)現(xiàn)方法

5)確認(rèn)創(chuàng)建信息,點(diǎn)擊 finish 生成項(xiàng)目

idea創(chuàng)建springboot父子module項(xiàng)目的實(shí)現(xiàn)方法

6)最終結(jié)構(gòu)目錄如下,項(xiàng)目已成功創(chuàng)建,后續(xù)我們要修改其中的 pom.xml 使其成為真正的父子項(xiàng)目

idea創(chuàng)建springboot父子module項(xiàng)目的實(shí)現(xiàn)方法

4. 建立父子 module 依賴(lài)

如果將建立的 parent 項(xiàng)目與后面創(chuàng)建的 module 產(chǎn)生關(guān)聯(lián),需要改動(dòng)以下幾點(diǎn)

  • 修改 parent 項(xiàng)目 pom.xml 的 packaging 標(biāo)簽打包方式為 pom

  • 修改 module 項(xiàng)目 pom.xml 文件依賴(lài) parent 項(xiàng)目

  • 刪除不必要文件并梳理 pom.xml 依賴(lài)上下級(jí)關(guān)系

4.1 修改 parent 項(xiàng)目 packaging

打開(kāi) parent 項(xiàng)目的根 pom.xml 文件,新增下方代碼

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

packaging 包含三個(gè)值 jar、war、pom,默認(rèn) jar的方式

首先來(lái)解釋下 packaging 為 pom 的意思,宏觀而言即沒(méi)有代碼需要測(cè)試或者編譯,也沒(méi)有資源需要處理

  • jar: 內(nèi)部調(diào)用或作為服務(wù)進(jìn)行發(fā)布使用

  • war: 需要部署的項(xiàng)目

  • pom: 寓意為一個(gè)父級(jí)項(xiàng)目,一般作為項(xiàng)目聚合和依賴(lài)傳遞使用

modules 代表了 parent 項(xiàng)目下的子 module,體現(xiàn)了聚合的思想

這里把 parent 項(xiàng)目的 pom.xml 配置復(fù)制出來(lái),幫助大家后續(xù)排查問(wèn)題

<?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>創(chuàng)建?springboot?父子模塊項(xiàng)目</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 的作用是運(yùn)行 mvn package 時(shí)會(huì)將項(xiàng)目打包為可運(yùn)行的 jar 包,java -jar 運(yùn)行即可

如果不加這個(gè) plugins,java -jar xxx.jar 會(huì)報(bào)出如下錯(cuò)誤

xxx/target/bootdemo-remote-api-0.0.1-snapshot.jar中沒(méi)有主清單屬性

4.2 修改 module pom.xml 信息

創(chuàng)建后的 module 項(xiàng)目的 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?項(xiàng)目</description>
????<properties>
????????<java.version>1.8</java.version>
????</properties>
</project>

4.3 刪除不必要文件

刪除 bootdemo-parent 項(xiàng)目下 src 包,因?yàn)?bootdemo-parent 作為聚合型項(xiàng)目,不會(huì)產(chǎn)生業(yè)務(wù)數(shù)據(jù)以及相關(guān)配置

另外說(shuō)一下 dependencies 和 dependencymanagement 標(biāo)簽做一個(gè)講解

dependencies

如果 parent 項(xiàng)目中使用 dependencies 標(biāo)簽,標(biāo)簽內(nèi)的依賴(lài)默認(rèn)傳遞子 module,不用子 module 進(jìn)行顯示書(shū)寫(xiě)依賴(lài)

dependencymanagement

dependencymanagement 與dependencies 不同的是,標(biāo)簽內(nèi)的依賴(lài)不會(huì)默認(rèn)傳遞子 module,其作用只是為了統(tǒng)一版本聲明

如果子 module 依賴(lài) parent 項(xiàng)目中 dependencymanagement 標(biāo)簽內(nèi)的 pom 依賴(lài),需要顯示在子 module 的 pom 文件中進(jìn)行書(shū)寫(xiě)

5. 項(xiàng)目繼承關(guān)系

我們按照《構(gòu)建子 module》章節(jié)的內(nèi)容,構(gòu)建出如下所述的子 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>創(chuàng)建?springboot?父子模塊業(yè)務(wù)?module</description>
????<properties>
????????<java.version>1.8</java.version>
????</properties>
????<dependencies>
??????	<!--繼承bootdemo-remote-api項(xiàng)目-->
????????<dependency>
????????????<groupid>cn.machen.bootdemo</groupid>
????????????<artifactid>bootdemo-remote-api</artifactid>
????????????<version>0.0.1-snapshot</version>
????????</dependency>
????</dependencies>
</project>

通過(guò)繼承關(guān)系的設(shè)置,bootdemo-remote-api 中的代碼就可以被 bootdemo-biz module 項(xiàng)目進(jìn)行引用

6. 發(fā)布 web 服務(wù)

在 parent 項(xiàng)目 pom.xml dependencies 標(biāo)簽中定義了 spring-boot-starter-web 依賴(lài),直接使用 web 相關(guān)內(nèi)容即可

我們?cè)?bootdemo-biz 中創(chuàng)建 controller 控制器

@restcontroller
public?class?democontroller?{
????@getmapping("/echo/{name}")
????public?string?sayhello(@pathvariable("name")?string?name)?{
????????return?"hello?world?"?+?name;
????}
}

啟動(dòng)后端項(xiàng)目成功后,瀏覽器輸入 http://localhost:8080/echo/mahua 請(qǐng)求后端服務(wù)

idea創(chuàng)建springboot父子module項(xiàng)目的實(shí)現(xiàn)方法

關(guān)于 "idea創(chuàng)建springboot父子module項(xiàng)目的實(shí)現(xiàn)方法" 就介紹到此。希望多多支持碩編程。

下一節(jié):springboot獲取項(xiàng)目目錄路徑的方法

java編程技術(shù)

相關(guān)文章