您好,登錄后才能下訂單哦!
做了多年的開發(fā),原來很多項目都是一個項目一個工程,如果用到其他的項目的依賴文件的時候的,直接手動copy過來就可以了,自從有了maven后,很多開源的項目和互聯(lián)網(wǎng)公司都開始使用maven來構(gòu)建聚合項目,通過聚合項目來解決單個項目龐大的問題。
單結(jié)構(gòu)工程
使用Java技術(shù)開發(fā)的工程項目,無論是數(shù)據(jù)處理系統(tǒng)還是Web網(wǎng)站,隨著項目的不斷發(fā)展,需求的不斷細化與添加,工程項目中的代碼越來越多,包結(jié)構(gòu)也越來越復(fù)雜這時候工程的進展就會遇到各種問題:
不同方面的代碼之間相互耦合,這時候一系統(tǒng)出現(xiàn)問題很難定位到問題的出現(xiàn)原因,即使定位到問題也很難修正問題,可能在修正問題的時候引入更多的問題。
多方面的代碼集中在一個整體結(jié)構(gòu)中,新入的開發(fā)者很難對整體項目有直觀的感受,增加了新手介入開發(fā)的成本,需要有一個熟悉整個項目的開發(fā)者維護整個項目的結(jié)構(gòu)(通常在項目較大且開發(fā)時間較長時這是很難做到的)。
開發(fā)者對自己或者他人負責(zé)的代碼邊界很模糊,這是復(fù)雜項目中最容易遇到的,導(dǎo)致的結(jié)果就是開發(fā)者很容易修改了他人負責(zé)的代碼且代碼負責(zé)人還不知道,責(zé)任追蹤很麻煩。
將一個復(fù)雜項目拆分成多個模塊是解決上述問題的一個重要方法,多模塊的劃分可以降低代碼之間的耦合性(從類級別的耦合提升到j(luò)ar包級別的耦合),每個模塊都可以是自解釋的(通過模塊名或者模塊文檔),模塊還規(guī)范了代碼邊界的劃分,開發(fā)者很容易通過模塊確定自己所負責(zé)的內(nèi)容。
使用maven搭建分層的聚合工程
>maven的多模塊劃分還是比較直觀的,每個模塊都是一個獨立的maven項目,模塊之間的相互引用和maven中對jar包依賴的解決是一致的,這使得物理(jar)和邏輯(dependency)上得以保持一致。
建立一個parent 或者root工程,相當于一個籃子,籃子里面放其他工程。
common 任何枚舉類和工作類,好處是所有其他的工程都可以相依賴,跨工程,跨項目來使用是沒有問題的。
pojo 所有工程脫離出來的,dao層和service之上的。
mpper(dao)數(shù)據(jù)層要跟數(shù)據(jù)庫交互的時候需要pojo,所以mpper層要在pojo之上。
service 引入dao 和 pojo類 common引入。
最后一層是開放層,api 接口層對外開發(fā),可以支持手機端的調(diào)用,小程序的調(diào)用。web層后臺的pc端登錄的也要依賴service層。
PS:其實不光是api和web層還有可能有什么文件管理層,權(quán)限層等等。都可以通過一層一層調(diào)用的方式不斷的進行擴張,減少代碼很方便。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。