前言
步驟過于詳細,多圖慎入2菀觥5鲡!
假設一個場景撩独,要開發(fā)一個4s店維修部的辦公系統(tǒng)敞曹,其功能有:前臺接待,維修搶單综膀,財務結算澳迫,庫存管理。于是我們創(chuàng)建一個項目balabalabala寫完交工剧劝。
一段時間后橄登,客戶提出,庫存管理出現(xiàn)了重大調整讥此。于是我們二次開發(fā)拢锹,寫好之后,告知客戶:“系統(tǒng)更新暂论,所有部門暫停使用15分鐘面褐、、取胎、”展哭。于是湃窍,客戶排隊,維修停工匪傍,結算暫停您市、、役衡、店內一片慌亂茵休。
又一段時間后,客戶提出手蝎,財務結算需要修改榕莺。于是我們再次開發(fā),寫好之后棵介,告知客戶:“系統(tǒng)更新钉鸯,所有部門暫停使用15分鐘、邮辽、唠雕、”。于是吨述,客戶排隊岩睁,維修停工,倉庫休息揣云、捕儒、、店內一片慌亂灵再。
雙一段時間后肋层,客戶提出亿笤、翎迁、、
叒一段時間后净薛,客戶開始抱怨:“我只是調整某一個部門的業(yè)務汪榔,你們能不能不要把整個系統(tǒng)停掉,這樣損失太大了肃拜、痴腌、、”
于是你對每個功能做一個系統(tǒng)燃领,接待系統(tǒng)士聪,維修系統(tǒng),財務系統(tǒng)猛蔽,庫存系統(tǒng)剥悟。四個系統(tǒng)應運而生灵寺;
叕一段時間后,客戶提出区岗,你看登錄后這個位置啊略板,把我的名字寫到公司名字下面,還要把十幾個股東的資料展示出來慈缔,還有叮称、、藐鹤、
于是你帶著需求回去面對四個系統(tǒng)的相同功能修改瓤檐、、娱节、卒距帅!
采用分模塊的方式構建項目就是將上例中用到的兩種方式結合在一起,簡而言之就是將一個大的項目拆分成小的模塊括堤,各功能之間互不干擾又可實現(xiàn)共用基礎參數(shù);
構建
以上述需求為例碌秸,我們在拆分之時,根據(jù)需求悄窃,將其分成
-
父模塊
erp-common
erp-service
erp-service-impl
erp-web-reception
erp-web-finance
erp-web-fix
erp-web-repertory
創(chuàng)建父模塊
構建分模塊項目的時候首先需要創(chuàng)建一個父級的模塊讥电,所有的子模塊均繼承自父模塊。因為我們整體架構采用SpringBoot構建轧抗,所以父模塊要創(chuàng)建為SpringBoot項目
- 選擇Spring Initializr --> Next
-
填寫項目名稱恩敌,選擇JDK版本,其他無需修改 --> Next
Group: 一般為公司域名倒置
Artifact: 項目名
- 選擇SpringBoot版本横媚,其他無需勾選 --> Next
- 填寫項目名纠炮、項目地址 --> Finish
- 創(chuàng)建之后,項目結構如下灯蝴,刪除如下選中部分文件
- 至此恢口,父模塊創(chuàng)建完成,此時的pom文件如下穷躁,此pom即是下文所說的父pom文件
創(chuàng)建 erp-common
erp-common模塊我們約定只存放實體類耕肩,工具類,常量類问潭、異常類等一些共用且不需要交由Spring管理的類猿诸,因此創(chuàng)建的時候不需要它是一個SpringBoot項目,只需要創(chuàng)建為傳統(tǒng)的Maven項目即可;
- 選中我們的項目名Wayne-ERP狡忙,右鍵New --> Module
- 選擇Maven梳虽,以表示我們創(chuàng)建的是一個Maven項目 --> Next
- 此處填寫的artifactId就是我們的模塊名,創(chuàng)建該模塊時灾茁,如果第一步選中了父模塊窜觉,那么此處GroupId和Version都會自動填充是复,如果沒有自動填充,說明創(chuàng)建該模塊的時候沒有選中Wayne-ERP --> Next
- 該模塊的名稱以及該模塊存放的位置竖螃,我一般在自動生成的名稱中間加個
-
就拿來直接使用了 --> Finish
- 最下面的pom.xml即是父pom淑廊,父pom內容如下,增加了一個module子模塊
- erp-common的pom文件如下特咆,其中圈起部分為自己添加內容季惩,relativePath 指向父pom位置
- 至此,erp-common模塊創(chuàng)建完成腻格,此時項目結構如下画拾,
創(chuàng)建 erp-service
erp-service模塊我們約定只存放service接口,因此也不需要交由Spring去管理菜职,所以我們也將其創(chuàng)建為傳統(tǒng)的Maven項目青抛,創(chuàng)建方式與erp-common相同,此處不再贅述酬核,如有不知道怎么操作的同學可私聊我或者發(fā)郵件給我
- 創(chuàng)建完成之后蜜另,此時父pom內容如下
- erp-service的pom文件如下
創(chuàng)建erp-service-impl
erp-service-impl我們約定存放service實現(xiàn)類,即業(yè)務層代碼嫡意,在Controller中需要用到自動注入举瑰,因此需要交由Spring管理,所以我們將其創(chuàng)建為SpringBoot項目蔬螟。在創(chuàng)建Maven的子模塊與創(chuàng)建SpringBoot的子模塊有些差別此迅,下面列出詳細步驟;
-
選中項目名Wayne-ERP,右鍵New --> Module旧巾,在彈出的頁面中選擇Spring Initializr --> Next
image 此處Group需要手動填寫耸序,填好之后 --> Next
- 選擇SpringBoot版本,與創(chuàng)建父模塊時選擇版本要保持一致
點擊Next --> Finish
創(chuàng)建完成之后鲁猩,需要在父pom中手動添加erp-service-impl子模塊坎怪,并刪除dependencies中的依賴
- 將erp-service-impl的pom文件中parent標簽,手動替換為如下格式
- 此時項目結構如下绳匀,刪除如下選中部分文件芋忿,因為我們程序的啟動入口在erp-web-*炸客,所以在erp-service-impl中不需要main方法(
SpringBoot是以Main方法啟動的
)
- 至此疾棵,erp-service-impl模塊創(chuàng)建完成,整體項目結構如下
創(chuàng)建erp-web-repertory
此模塊即是我們倉庫管理系統(tǒng)的打包入口痹仙,啟動入口是尔,存放與倉管相關接口和頁面
- 創(chuàng)建方式與erp-service-impl相似,此處需要修改Package內容开仰,此處包名表示SpringBoot自動生成的main方法所在的位置拟枚,因為SpringBoot基于main方法啟動時薪铜,默認會自動掃描本包及本包下所有子包的內容,所以我們將main方法向外提一層恩溅;
- 此處表示SpringBoot創(chuàng)建好之后隔箍,自動添加的依賴,我們只選擇Web即可脚乡,表明這是一個Web項目蜒滩,后續(xù)需要用到第三方框架,我們再自行整合奶稠;
- 其余步驟與erp-service-impl相似俯艰,只是不需要刪除自動生成的文件,此時項目接口如下:
創(chuàng)建其余web模塊
此時我們還剩erp-web-reception锌订、erp-web-finance竹握、erp-web-fix沒有創(chuàng)建,這三個模塊與erp-web-repertory創(chuàng)建方式相同辆飘,此處就不再贅述啦辐,只需注意命名問題即可;
完整項目結構:
依賴
各個模塊已經創(chuàng)建完成蜈项,還剩下的就是各個模塊之間的依賴關系了昧甘,各模塊之間應該怎么依賴呢?具體的哪個包又應該放在哪個模塊下面的战得?我整理一張圖片供大家參考:
pom文件如下:
web模塊pom基本相似充边,都只引入erp-service-impl即可,在此只列舉一個
運行
每個web模塊對應一個main方法常侦,啟動時找到各自的main方法浇冰,點擊啟動即可,idea一般會自動檢測SpringBoot程序入口聋亡,想跑哪個點哪個~~
擴展
另一種模塊結構肘习,感興趣的可以發(fā)郵件與我;占位符
常規(guī)占位 (¬_¬)…