十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
如何進(jìn)行maven模塊劃分實(shí)踐,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
創(chuàng)新互聯(lián)從2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元伊美做網(wǎng)站,已為上家服務(wù),為伊美各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108
我們平常做的java項(xiàng)目模塊劃分可能是這樣:
controller為控制器層;service為業(yè)務(wù)邏輯實(shí)現(xiàn)層;dao和數(shù)據(jù)庫交互;util放些工具類;constant放常量類。
這樣的模塊劃分很常見,但是有很多弊端:
1、當(dāng)隨著項(xiàng)目版本迭代,需求不斷增加,代碼結(jié)構(gòu)越來越龐大,為后期的維護(hù)增大成本。比如說,我們改了一個controller類,就得整個項(xiàng)目全部編譯。
2、比如說項(xiàng)目的util包里封裝了很多通用工具類,當(dāng)前項(xiàng)目可以用,其他項(xiàng)目也可以用,如果是上面的劃分模式,就得依賴項(xiàng)目war,這變得非常的惡心,因?yàn)樵趍aven中配置對war的依賴遠(yuǎn)不如依賴jar那樣簡單明了。
其實(shí)這種劃分沒有遵守一個設(shè)計(jì)模式原則:“高內(nèi)聚,低耦合”。雖然我們通過包名劃分了層次,這很好,但還不夠,因?yàn)榫蜆?gòu)建層次來說,所有東西都被耦合在一起了。因此我們需要使用Maven劃分模塊(module)
如下圖:
artmuseum-parent為所有module的父類,打包類型為pom,只有一個pom.xml文件用于管理module;
artmuseum-common被artmuseum-parent管理,該工程用于封裝工具類、常量,打包類型為jar;
artmuseum-manage同樣被artmuseum-parent管理,為該項(xiàng)目主要module,用于管理controller、service、dao、pojo這四個module,打包類型為pom;
module之間依賴關(guān)系如下:
artmuseum-manage-controller ->
artmuseum-manage-service ->
artmuseum-manage-dao ->
artmuseum-manage-pojo ->
artmuseum-common
這種劃分就解決了上面的弊端:
1、方便重用,如果需要把common包中的工具類等用到其他項(xiàng)目組件,只需要
把common這個module執(zhí)行mvn install后,依賴生成的jar即可;
2、利于擴(kuò)展和維護(hù),修改了controller層的代碼,只需要mvn install這個module即可。
基于此,今天擼了一個聚合工程出來,用到了SSM框架并實(shí)現(xiàn)了一個發(fā)布項(xiàng)目的接口(簡單的入庫)。
工程結(jié)構(gòu)如下:
接口測試如下:
入庫成功如下:
看完上述內(nèi)容,你們掌握如何進(jìn)行maven模塊劃分實(shí)踐的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!