[史上最詳細]springboot創(chuàng)建基于maven的多模塊項目

背景

項目為什么需要用多模塊?springmvc難道還不夠我們平常使用嗎倒信?

  1. 設計模式真言:“高內(nèi)聚鳖悠、低耦合”乘综,springmvc項目卡辰,一般會把項目分成多個包:controller、service反砌、dao于颖、util等森渐,但是隨著項目的復雜性提高冒晰,想復用其他一個模塊的話,因為是包的形式耐齐,剝離出來會比較困難埠况,耦合性有點強辕翰,常用的方法就是復制代碼修改喜命,但是這樣會做很多無用功與增加出錯幾率河劝。
  2. springboot多模塊簡單來說赎瞎,就是把按包分模塊的模式务甥,借助maven升級到jar的方式缓呛,抽象性更加強了哟绊,假如jar再升級到到war或者多個集合jar票髓,就成微服務了,在多模塊jar模式下可以將某個jar拿出來對外共用以故,能大大提高代碼復用率與開發(fā)效率怒详。

<center>話不多說開搞</center>

springboot多模塊創(chuàng)建

父模塊創(chuàng)建

  • 打開idea:選擇Create New Project
alt "公眾號:Madison龍少"

或者去官網(wǎng)創(chuàng)建(跟idea船艦項目是一樣的昆烁,我這里用的是idea)

alt "公眾號:Madison龍少"
  • 然后選擇Spring Initializr
alt "公眾號:Madison龍少"
  • 點擊next之后—>基本設置
alt "公眾號:Madison龍少"
  • 點擊next之后->添加依賴
alt "公眾號:Madison龍少"
  • 點擊next之后->選擇項目地址
alt "公眾號:Madison龍少"
  • 點擊finish之后
alt "公眾號:Madison龍少"

子模塊創(chuàng)建

  • 父項目名稱->右鍵->new->moudle
alt "公眾號:Madison龍少"
  • 點擊Spring Initializr(選擇合適jdk版本)->next
alt "公眾號:Madison龍少"
  • 點擊next之后->設置Maven Project 而不是跟父項目相同的Maven Pom
alt "公眾號:Madison龍少"
  • 點擊next之后->添加依賴
alt "公眾號:Madison龍少"
  • 點擊next->選擇確認項目地址
alt "公眾號:Madison龍少"
  • 點擊finish完成
alt "公眾號:Madison龍少"

然后再創(chuàng)建一個子模塊multi-core 過程跟multi-controller一樣拦盹,我這里就省略了薪鹦。我們這里就暫時創(chuàng)建兩個子模塊掌敬。

  • 項目創(chuàng)建完成整體結(jié)構(gòu)圖
alt "公眾號:Madison龍少"

注:由于程序的主入口是multi-controller 所有 multi-core里面 application.properties MultiCoreApplication.java 文件都刪除了

修改pom文件

1.修改父項目pom-修改完成如下所示(有注釋)

<?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.4.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.tinygray</groupId>
    <artifactId>multi-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>multi-parent</name>
    <description>Demo project for Spring Boot</description>
    <!--修改父項目的打包方式為pom-->
    <packaging>pom</packaging>
    <!--添加子模塊到父項目-->
    <modules>
        <module>multi-controller</module>
        <module>multi-core</module>
    </modules>
    <!--依賴版本統(tǒng)一管理-->
    <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</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <!--解決非web模塊 test打包報錯問題  1.4.2.RELEASE版本可以-->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
            <version>2.0.1.RELEASE</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>

2.修改子項目pom

  • multi-controller
<?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>

    <artifactId>multi-controller</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>multi-controller</name>
    <description>Demo project for Spring Boot</description>
    <!--引入父項目 替換掉之前的springboot父項目(spring-boot-starter-parent)-->
    <parent>
        <artifactId>multi-parent</artifactId>
        <groupId>com.tinygray</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
   <!-- <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.1</version>
        <relativePath/> &lt;!&ndash; lookup parent from repository &ndash;&gt;
    </parent>-->

    <dependencies>
        <!--引入multi-core模塊-->
        <dependency>
            <groupId>com.tinygray</groupId>
            <artifactId>multi-core</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>com.tinygray.multicontroller.MultiControllerApplication</mainClass>
                    <layout>JAR</layout>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
  • multi-core
<?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>

    <artifactId>multi-core</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>multi-core</name>
    <description>Demo project for Spring Boot</description>
    <!--引入父項目 替換掉之前的springboot父項目(spring-boot-starter-parent)-->
    <parent>
        <artifactId>multi-parent</artifactId>
        <groupId>com.tinygray</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <!-- <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
         <version>2.4.1</version>
         <relativePath/> &lt;!&ndash; lookup parent from repository &ndash;&gt;
     </parent>-->

    <dependencies>
        <!--引入該模塊需要的依賴-->
    </dependencies>

</project>

springboot多模塊創(chuàng)建完成之后驗證啟動

驗證

你如何知道你的多模塊項目搭建完成并能成功啟動了呢?
看下圖:

[圖片上傳失敗...(image-312d84-1616128934984)]

alt "公眾號:Madison龍少"
alt "公眾號:Madison龍少"

出現(xiàn)以上圖片結(jié)果就是你的多模塊項目創(chuàng)建完成了并可以啟動了

啟動

  • 找到啟動類
alt "公眾號:Madison龍少"
  • 執(zhí)行啟動類
alt "公眾號:Madison龍少"
  • 執(zhí)行成功

[圖片上傳失敗...(image-be7833-1616128934984)]

  • 瀏覽器打開http://localhost:8080
alt "公眾號:Madison龍少"
  • 出現(xiàn)以上結(jié)果表示多模塊項目已經(jīng)搭建完成了

寫一個測試接口訪問

  • 創(chuàng)建兩個java文件(一個實體類User一個UserController)
alt "公眾號:Madison龍少"
  • User.java池磁、UserController.java文件內(nèi)容-很簡單一個測試接口
alt "公眾號:Madison龍少"
alt "公眾號:Madison龍少"
  • 出現(xiàn)以上結(jié)果就表示測試成功了。

結(jié)束語

如果幫到你的話地熄,記得點贊評論轉(zhuǎn)發(fā)哦

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末华临,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子端考,更是在濱河造成了極大的恐慌雅潭,老刑警劉巖揭厚,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異扶供,居然都是意外死亡筛圆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門椿浓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來太援,“玉大人,你說我怎么就攤上這事扳碍√岵恚” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵笋敞,是天一觀的道長碱蒙。 經(jīng)常有香客問我,道長夯巷,這世上最難降的妖魔是什么赛惩? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮鞭莽,結(jié)果婚禮上坊秸,老公的妹妹穿的比我還像新娘。我一直安慰自己澎怒,他們只是感情好褒搔,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著喷面,像睡著了一般星瘾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上惧辈,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天琳状,我揣著相機與錄音,去河邊找鬼盒齿。 笑死念逞,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的边翁。 我是一名探鬼主播翎承,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼符匾!你這毒婦竟也來了叨咖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎甸各,沒想到半個月后垛贤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡趣倾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年聘惦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片誊酌。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡部凑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出碧浊,到底是詐尸還是另有隱情,我是刑警寧澤瘟仿,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布箱锐,位于F島的核電站,受9級特大地震影響劳较,放射性物質(zhì)發(fā)生泄漏驹止。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一观蜗、第九天 我趴在偏房一處隱蔽的房頂上張望臊恋。 院中可真熱鬧,春花似錦墓捻、人聲如沸抖仅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽撤卢。三九已至,卻和暖如春梧兼,著一層夾襖步出監(jiān)牢的瞬間放吩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工羽杰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留渡紫,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓考赛,卻偏偏與公主長得像惕澎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子欲虚,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容