基于SpringBoot構(gòu)建分模塊項(xiàng)目

前言

步驟過于詳細(xì),多圖慎入?。?!

假設(shè)一個(gè)場景,要開發(fā)一個(gè)4s店維修部的辦公系統(tǒng),其功能有:前臺(tái)接待,維修搶單,財(cái)務(wù)結(jié)算,庫存管理。于是我們創(chuàng)建一個(gè)項(xiàng)目balabalabala寫完交工。

一段時(shí)間后,客戶提出,庫存管理出現(xiàn)了重大調(diào)整。于是我們二次開發(fā),寫好之后,告知客戶:“系統(tǒng)更新,所有部門暫停使用15分鐘、、、”。于是,客戶排隊(duì),維修停工,結(jié)算暫停、、、店內(nèi)一片慌亂。

又一段時(shí)間后,客戶提出,財(cái)務(wù)結(jié)算需要修改。于是我們再次開發(fā),寫好之后,告知客戶:“系統(tǒng)更新,所有部門暫停使用15分鐘、、、”。于是,客戶排隊(duì),維修停工,倉庫休息、、、店內(nèi)一片慌亂。

雙一段時(shí)間后,客戶提出、、、

叒一段時(shí)間后,客戶開始抱怨:“我只是調(diào)整某一個(gè)部門的業(yè)務(wù),你們能不能不要把整個(gè)系統(tǒng)停掉,這樣損失太大了、、、”

于是你對每個(gè)功能做一個(gè)系統(tǒng),接待系統(tǒng),維修系統(tǒng),財(cái)務(wù)系統(tǒng),庫存系統(tǒng)。四個(gè)系統(tǒng)應(yīng)運(yùn)而生;

叕一段時(shí)間后,客戶提出,你看登錄后這個(gè)位置啊,把我的名字寫到公司名字下面,還要把十幾個(gè)股東的資料展示出來,還有、、、

于是你帶著需求回去面對四個(gè)系統(tǒng)的相同功能修改、、、卒!

采用分模塊的方式構(gòu)建項(xiàng)目就是將上例中用到的兩種方式結(jié)合在一起,簡而言之就是將一個(gè)大的項(xiàng)目拆分成小的模塊,各功能之間互不干擾又可實(shí)現(xiàn)共用基礎(chǔ)參數(shù);

構(gòu)建

以上述需求為例,我們在拆分之時(shí),根據(jù)需求,將其分成

  • 父模塊

    • erp-common

    • erp-service

    • erp-service-impl

    • erp-web-reception

    • erp-web-finance

    • erp-web-fix

    • erp-web-repertory

創(chuàng)建父模塊

構(gòu)建分模塊項(xiàng)目的時(shí)候首先需要?jiǎng)?chuàng)建一個(gè)父級(jí)的模塊,所有的子模塊均繼承自父模塊。因?yàn)槲覀冋w架構(gòu)采用SpringBoot構(gòu)建,所以父模塊要?jiǎng)?chuàng)建為SpringBoot項(xiàng)目

  1. 選擇Spring Initializr --> Next
image
  1. 填寫項(xiàng)目名稱,選擇JDK版本,其他無需修改 --> Next

    • Group: 一般為公司域名倒置

    • Artifact: 項(xiàng)目名

image
  1. 選擇SpringBoot版本,其他無需勾選 --> Next
image
  1. 填寫項(xiàng)目名、項(xiàng)目地址 --> Finish
image
  1. 創(chuàng)建之后,項(xiàng)目結(jié)構(gòu)如下,刪除如下選中部分文件
image
  1. 至此,父模塊創(chuàng)建完成,此時(shí)的pom文件如下,此pom即是下文所說的父pom文件
image

創(chuàng)建 erp-common

erp-common模塊我們約定只存放實(shí)體類,工具類,常量類、異常類等一些共用且不需要交由Spring管理的類,因此創(chuàng)建的時(shí)候不需要它是一個(gè)SpringBoot項(xiàng)目,只需要?jiǎng)?chuàng)建為傳統(tǒng)的Maven項(xiàng)目即可;

  1. 選中我們的項(xiàng)目名Wayne-ERP,右鍵New --> Module
image
  1. 選擇Maven,以表示我們創(chuàng)建的是一個(gè)Maven項(xiàng)目 --> Next
image
  1. 此處填寫的artifactId就是我們的模塊名,創(chuàng)建該模塊時(shí),如果第一步選中了父模塊,那么此處GroupId和Version都會(huì)自動(dòng)填充,如果沒有自動(dòng)填充,說明創(chuàng)建該模塊的時(shí)候沒有選中Wayne-ERP --> Next
image
  1. 該模塊的名稱以及該模塊存放的位置,我一般在自動(dòng)生成的名稱中間加個(gè)-就拿來直接使用了 --> Finish
image
  1. 最下面的pom.xml即是父pom,父pom內(nèi)容如下,增加了一個(gè)module子模塊
image
  1. erp-common的pom文件如下,其中圈起部分為自己添加內(nèi)容,relativePath 指向父pom位置
image
  1. 至此,erp-common模塊創(chuàng)建完成,此時(shí)項(xiàng)目結(jié)構(gòu)如下,
image

創(chuàng)建 erp-service

erp-service模塊我們約定只存放service接口,因此也不需要交由Spring去管理,所以我們也將其創(chuàng)建為傳統(tǒng)的Maven項(xiàng)目,創(chuàng)建方式與erp-common相同,此處不再贅述,如有不知道怎么操作的同學(xué)可私聊我或者發(fā)郵件給我

  1. 創(chuàng)建完成之后,此時(shí)父pom內(nèi)容如下
image
  1. erp-service的pom文件如下
image

創(chuàng)建erp-service-impl

erp-service-impl我們約定存放service實(shí)現(xiàn)類,即業(yè)務(wù)層代碼,在Controller中需要用到自動(dòng)注入,因此需要交由Spring管理,所以我們將其創(chuàng)建為SpringBoot項(xiàng)目。在創(chuàng)建Maven的子模塊與創(chuàng)建SpringBoot的子模塊有些差別,下面列出詳細(xì)步驟;

  1. 選中項(xiàng)目名Wayne-ERP,右鍵New --> Module,在彈出的頁面中選擇Spring Initializr --> Next

    image
  2. 此處Group需要手動(dòng)填寫,填好之后 --> Next

image
  1. 選擇SpringBoot版本,與創(chuàng)建父模塊時(shí)選擇版本要保持一致
image
  1. 點(diǎn)擊Next --> Finish

  2. 創(chuàng)建完成之后,需要在父pom中手動(dòng)添加erp-service-impl子模塊,并刪除dependencies中的依賴

image
  1. 將erp-service-impl的pom文件中parent標(biāo)簽,手動(dòng)替換為如下格式
image
  1. 此時(shí)項(xiàng)目結(jié)構(gòu)如下,刪除如下選中部分文件,因?yàn)槲覀兂绦虻膯?dòng)入口在erp-web-*,所以在erp-service-impl中不需要main方法(SpringBoot是以Main方法啟動(dòng)的)
image
  1. 至此,erp-service-impl模塊創(chuàng)建完成,整體項(xiàng)目結(jié)構(gòu)如下
image

創(chuàng)建erp-web-repertory

此模塊即是我們倉庫管理系統(tǒng)的打包入口,啟動(dòng)入口,存放與倉管相關(guān)接口和頁面

  1. 創(chuàng)建方式與erp-service-impl相似,此處需要修改Package內(nèi)容,此處包名表示SpringBoot自動(dòng)生成的main方法所在的位置,因?yàn)镾pringBoot基于main方法啟動(dòng)時(shí),默認(rèn)會(huì)自動(dòng)掃描本包及本包下所有子包的內(nèi)容,所以我們將main方法向外提一層;
image
  1. 此處表示SpringBoot創(chuàng)建好之后,自動(dòng)添加的依賴,我們只選擇Web即可,表明這是一個(gè)Web項(xiàng)目,后續(xù)需要用到第三方框架,我們再自行整合;
image
  1. 其余步驟與erp-service-impl相似,只是不需要?jiǎng)h除自動(dòng)生成的文件,此時(shí)項(xiàng)目接口如下:
image

創(chuàng)建其余web模塊

此時(shí)我們還剩erp-web-reception、erp-web-finance、erp-web-fix沒有創(chuàng)建,這三個(gè)模塊與erp-web-repertory創(chuàng)建方式相同,此處就不再贅述,只需注意命名問題即可;

完整項(xiàng)目結(jié)構(gòu):

image

依賴

各個(gè)模塊已經(jīng)創(chuàng)建完成,還剩下的就是各個(gè)模塊之間的依賴關(guān)系了,各模塊之間應(yīng)該怎么依賴呢?具體的哪個(gè)包又應(yīng)該放在哪個(gè)模塊下面的?我整理一張圖片供大家參考:

image

pom文件如下:

image

web模塊pom基本相似,都只引入erp-service-impl即可,在此只列舉一個(gè)

image

運(yùn)行

每個(gè)web模塊對應(yīng)一個(gè)main方法,啟動(dòng)時(shí)找到各自的main方法,點(diǎn)擊啟動(dòng)即可,idea一般會(huì)自動(dòng)檢測SpringBoot程序入口,想跑哪個(gè)點(diǎn)哪個(gè)~~

image

擴(kuò)展

另一種模塊結(jié)構(gòu),感興趣的可以發(fā)郵件與我;
image

占位符

常規(guī)占位 (¬_¬)…

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容