開始先給大家講一個故事:
客戶要做一個內部辦公系統項目,項目包含了 前台接待,員工管理,財務結算,庫存管理 然后,我們一塊做,做完上線。
過了段時間,某個功能需要修改,於是你們一塊改改改,上線時,所有功能都暫停使用20分鍾,更新版本。
再過了段時間,財務結算需要修改,於是又改改改,上線時,又暫停20分鍾,更新版本。
時間過去了,客戶又提出,,,,,
客戶開始抱怨了,我只是要改某個模塊,每次都要所有部門都暫停,損失太大了!
於是,接待系統,員工系統,財務系統,庫存系統。四個系統應運而生;
叕一段時間后,客戶提出,你看登錄后這個位置啊,把我的名字寫到公司名字下面,還要把十幾個股東的資料展示出來,還有、、、
於是你帶着需求回去面對四個系統的相同功能修改、、、卒!
采用分模塊的方式構建項目就是將上例中用到的兩種方式結合在一起,簡而言之就是將一個大的項目拆分成小的模塊,各功能之間互不干擾又可實現共用基礎參數;
各個模塊之間依賴關系
看結構 一目了然
編譯工具:IDEA JDK1.8
打開IDEA,左上角 File-->new-->project
選擇Spring Initializr --> Next
之后填寫項目名稱,選擇JDK版本,其他無需修改 --> Next
Group: 一般為公司域名 Artifact: 項目工程名稱
因為我們是在構建父模塊,所以其他暫時不要勾選,看一下springboot的版本
之后填寫項目名、項目地址 --> Finish
等待項目構建完成...........
刪掉部分文件
到這里,父模塊算是構建完成,給大家看一下父模塊的pom文件內容
創建common公共模塊 ,common層我們一般存放實體類,工具類,常量類、異常類等一些共用且不需要交由Spring管理的類,因此創建的時候不需要它是一個SpringBoot項目,只需要創建為傳統的Maven項目即可;
選中我們的項目名Benci-erp,右鍵New --> Module
選擇Maven,以表示我們創建的是一個Maven項目 --> Next
此處填寫的artifactId就是我們的模塊名,創建該模塊時,如果第一步選中了父模塊,那么此處GroupId和Version都會自動填充,如果沒有自動填充,說明創建該模塊的時候沒有選中Wayne-ERP --> Next
該模塊的名稱以及該模塊存放的位置,我一般在自動生成的名稱中間加個-
就拿來直接使用了 --> Finish
我們再回過頭看一下父pom 你會發現 父pom多了一個module子模塊
我們再打開erp-common模塊的pom文件 其中relativePath 指向父pom文件位置
到現在,common公共層已創建完畢,我們再看一下項目結構
創建 erp-service 方式和common一樣,此處不再一一演示。service我們一般只存放service接口,因此也不需要交由Spring去管理,所以我們也將其創建為傳統的Maven項目。
創建中。。。。。。
創建完成后,父pom會多一個module
erp-service的pom文件如下
創建erp-service-impl
erp-service-impl我們一般存放service實現類,Controller中需要自動注入,需要交由Spring管理,所以我們將其創建為SpringBoot項目。
選中項目名Benci-Erp,右鍵New --> Module,在彈出的頁面中選擇Spring Initializr --> Next
此處Group需要手動填寫,填好之后 --> Next
選擇SpringBoot版本,與創建父模塊時選擇版本要保持一致
創建中....................
創建完成之后,需要在父pom中手動添加erp-service-impl子模塊,並刪除dependencies中的依賴
erp-service-impl的pom文件中parent標簽,手動替換為如下格式
刪掉service-impl部分文件
到這里 基本架構基本完成了 接下來 你要看你想把項目拆成多少模塊,比如 倉庫模塊 員工管理模塊 財務結算模塊 接待模塊
比如倉庫模塊
新建module erp-Warehouse
這就是我們倉庫管理系統的打包入口,啟動入口,存放與倉管相關接口和頁面
創建方式與erp-service-impl相似
此處需要修改Package內容,此處包名表示SpringBoot自動生成的main方法所在的位置
因為SpringBoot基於main方法啟動時,默認會自動掃描本包及本包下所有子包的內容,所以我們將main方法向外提一層;
把剩余幾個系統構建完,項目結構如圖
給大家列舉一下建好的各個模塊的pom文件
每個web模塊對應一個main方法
啟動時找到各自的main方法
點擊啟動即可
到這里 已經講解完成!
有不對的地方或者有遺漏的地方麻煩指出一下,不勝感激!