新聞中心
前言
很久沒有更新博客了,之前定下周更逐漸成了月更。怎么感覺像我追過的一部動漫。 這個博文其實很早就想寫了。 之前所有的代碼都是在一個模塊里面進行開發(fā),這和maven的理念是完全不相符的,最近硬是抽了一個時間來對項目的結(jié)構(gòu)進行了一次重構(gòu)。

成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的安源網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
前言
很久沒有更新博客了,之前定下周更逐漸成了月更。怎么感覺像我追過的一部動漫。 這個博文其實很早就想寫了。 之前所有的代碼都是在一個模塊里面進行開發(fā),這和maven的理念是完全不相符的,最近硬是抽了一個時間來對項目的結(jié)構(gòu)進行了一次重構(gòu)。
先來看看這次重構(gòu)之后的目錄結(jié)構(gòu)
為什么需要分模塊
至于為什么要分模塊呢?
我們設(shè)想一個這樣的場景: 在現(xiàn)在的互聯(lián)網(wǎng)開發(fā)中,會把一個很大的系統(tǒng)拆分成各個子系統(tǒng)用于降低他們之間的耦合度。
在一個子項目中通常都會為API、WEB、Service等模塊。 而且當(dāng)項目夠大時,這些通常都不是一個人能完成的工作,需要一個團隊來各司其職。
想象一下:當(dāng)之前所有的項目都在一個模塊的時候,A改動了API,需要Deploy代碼。而B也改動了service的代碼,但并沒有完全做完。所以A在提交build的時候就會報錯
而且在整個項目足夠大的時候,這個build的時間也是很影響效率的。
但讓我將各個模塊之間分開之后效果就不一樣了。我修改了API我就只需要管我的就行,不需要整個項目進行build。
而且當(dāng)有其他項目需要依賴我這個API的時候也只需要依賴API即可,不用整個項目都依賴過去。
各個模塊的作用
來看下這次我所分的模塊。
ROOT
這是整個項目的根節(jié)點。 先看一下其中的pom.xml:
com.crossoverJie
-
SSM
-
pom
-
2.0.0
-
-
-
SSM-API
-
SSM-BOOT
-
SSM-SERVICE
-
SSM-WEB
-
-
-
-
UTF-8
-
4.1.4.RELEASE
-
2.5.0
-
6.0.1
-
-
-
-
-
-
-
-
com.crossoverJie
-
SSM-API
-
2.0.0
-
-
-
我截取了其中比較重點的配置。
由于這是父節(jié)點,所以我的packag類型使用的是pom。 其中分別有著四個子模塊。
其中重點看下這個標(biāo)簽。 如果使用的是IDEA這個開發(fā)工具的話是可以看到如下圖:
標(biāo)紅的有一個向下的箭頭,點一下就可以進入子模塊中相同的依賴。 這樣子模塊就不需要配置具體的版本了,統(tǒng)一由父模塊來進行維護,對之后的版本升級也帶來了好處。
SSM-API
接下來看下API這個模塊:
通常這個模塊都是用于定義外部接口的,以及改接口所依賴的一些DTO類。 一般這個模塊都是拿來給其他項目進行依賴,并和本項目進行數(shù)據(jù)交互的。
SSM-BOOT
BOOT這個模塊比較特殊。 可以看到這里沒有任何代碼,只有一個rpc的配置文件。 通常這個模塊是用于給我們內(nèi)部項目進行依賴的,并不像上面的API模塊一樣給其他部門或者是項目進行依賴的。
因為在我們的RPC調(diào)用的時候,用dubbo來舉例,是需要配置所依賴的consumer。
但如果是我們自己內(nèi)部調(diào)用的話我們就可以把需要調(diào)用自己的dubbo服務(wù)提供者配置在這里,這樣的話我們自己調(diào)用就只需要依賴這個BOOT就可以進行調(diào)用了。
哦對了,BOOT同時還會依賴API,這樣才實現(xiàn)了只依賴BOOT就可以調(diào)用自己內(nèi)部的dubbo服務(wù)了。 如下所示:
-
-
junit
-
junit
-
test
-
-
-
-
com.crossoverJie
-
SSM-API
-
-
-
SSM-SERVICE
SERVICE模塊就比較好理解了。 是處理具體業(yè)務(wù)邏輯的地方,也是對之前的API的實現(xiàn)。
通常這也是一個web模塊,所以我的pom類型是WAR。
SSM-WEB
其實WEB模塊和SERVICE模塊有點重合了。通常來說這個模塊一般在一個對外提供http訪問接口的項目中。
這里只是為了展示項目結(jié)構(gòu),所以也寫在了這里。
他的作用和service差不多,都是WAR的類型。
總結(jié)
這次沒有實現(xiàn)什么特別的功能,只是對一些還沒有接觸過這種項目結(jié)構(gòu)開發(fā)的童鞋能起到一些引導(dǎo)作用。
具體源碼還請關(guān)注我的github。
項目地址:https://github.com/crossoverJie/SSM.git
個人博客地址:http://crossoverjie.top。
GitHub地址:https://github.com/crossoverJie。
先來看看這次重構(gòu)之后的目錄結(jié)構(gòu)
為什么需要分模塊
至于為什么要分模塊呢?
我們設(shè)想一個這樣的場景: 在現(xiàn)在的互聯(lián)網(wǎng)開發(fā)中,會把一個很大的系統(tǒng)拆分成各個子系統(tǒng)用于降低他們之間的耦合度。
在一個子項目中通常都會為API、WEB、Service等模塊。 而且當(dāng)項目夠大時,這些通常都不是一個人能完成的工作,需要一個團隊來各司其職。
想象一下:當(dāng)之前所有的項目都在一個模塊的時候,A改動了API,需要Deploy代碼。而B也改動了service的代碼,但并沒有完全做完。所以A在提交build的時候就會報錯
而且在整個項目足夠大的時候,這個build的時間也是很影響效率的。
但讓我將各個模塊之間分開之后效果就不一樣了。我修改了API我就只需要管我的就行,不需要整個項目進行build。
而且當(dāng)有其他項目需要依賴我這個API的時候也只需要依賴API即可,不用整個項目都依賴過去。
各個模塊的作用
來看下這次我所分的模塊。
ROOT
這是整個項目的根節(jié)點。 先看一下其中的pom.xml:
com.crossoverJie SSM pom 2.0.0 SSM-API SSM-BOOT SSM-SERVICE SSM-WEB UTF-8 4.1.4.RELEASE 2.5.0 6.0.1 com.crossoverJie SSM-API 2.0.0 我截取了其中比較重點的配置。
由于這是父節(jié)點,所以我的packag類型使用的是pom。 其中分別有著四個子模塊。
其中重點看下這個標(biāo)簽。 如果使用的是IDEA這個開發(fā)工具的話是可以看到如下圖:
標(biāo)紅的有一個向下的箭頭,點一下就可以進入子模塊中相同的依賴。 這樣子模塊就不需要配置具體的版本了,統(tǒng)一由父模塊來進行維護,對之后的版本升級也帶來了好處。
SSM-API
接下來看下API這個模塊:
通常這個模塊都是用于定義外部接口的,以及改接口所依賴的一些DTO類。 一般這個模塊都是拿來給其他項目進行依賴,并和本項目進行數(shù)據(jù)交互的。
SSM-BOOT
BOOT這個模塊比較特殊。 可以看到這里沒有任何代碼,只有一個rpc的配置文件。 通常這個模塊是用于給我們內(nèi)部項目進行依賴的,并不像上面的API模塊一樣給其他部門或者是項目進行依賴的。
因為在我們的RPC調(diào)用的時候,用dubbo來舉例,是需要配置所依賴的consumer。
但如果是我們自己內(nèi)部調(diào)用的話我們就可以把需要調(diào)用自己的dubbo服務(wù)提供者配置在這里,這樣的話我們自己調(diào)用就只需要依賴這個BOOT就可以進行調(diào)用了。
哦對了,BOOT同時還會依賴API,這樣才實現(xiàn)了只依賴BOOT就可以調(diào)用自己內(nèi)部的dubbo服務(wù)了。 如下所示:
junit junit test com.crossoverJie SSM-API
SSM-SERVICE
SERVICE模塊就比較好理解了。 是處理具體業(yè)務(wù)邏輯的地方,也是對之前的API的實現(xiàn)。
通常這也是一個web模塊,所以我的pom類型是WAR。
SSM-WEB
其實WEB模塊和SERVICE模塊有點重合了。通常來說這個模塊一般在一個對外提供http訪問接口的項目中。
這里只是為了展示項目結(jié)構(gòu),所以也寫在了這里。
他的作用和service差不多,都是WAR的類型。
總結(jié)
這次沒有實現(xiàn)什么特別的功能,只是對一些還沒有接觸過這種項目結(jié)構(gòu)開發(fā)的童鞋能起到一些引導(dǎo)作用。
具體源碼還請關(guān)注我的github。
項目地址:https://github.com/crossoverJie/SSM.git
個人博客地址:http://crossoverjie.top。
GitHub地址:https://github.com/crossoverJie。
網(wǎng)頁名稱:SSM(十)項目重構(gòu)-互聯(lián)網(wǎng)項目的Maven結(jié)構(gòu)
文章轉(zhuǎn)載:http://m.5511xx.com/article/dhidpic.html


咨詢
建站咨詢
