java项目 分模块管理_java 工程项目模块划分及各模块功能梳理
對(duì)于基于前后臺(tái)分離的JAVA項(xiàng)目,除了前端展示層頁(yè)面,很多人都知道conttroller,service,dao三層,大部分都是按照這個(gè)方法搭建的。由于人員參差不齊,看到有人將在controler層編寫了大量的邏輯代碼甚至引用了Dao層的對(duì)象,或者controllor層接受JsonObject的對(duì)象一股腦的推給service層處理。
下面參考阿里的結(jié)構(gòu)圖,給大家介紹一下如何分層,以及各層的領(lǐng)域模型命名方式。
Dao層:是數(shù)據(jù)交互層,如果是spring boot +mybatis的話,就是指Mapper.java接口和Mapper.xml構(gòu)成,該層入口為查詢參數(shù),如果參數(shù)多于三個(gè)則增加QUERY對(duì)象,輸出結(jié)果為DO
Manager層:則是對(duì)Dao層的加強(qiáng),依賴于Dao層,但不直接操作數(shù)據(jù)庫(kù),可以通過對(duì)Dao層的結(jié)果進(jìn)行組合,生成復(fù)雜的對(duì)象模型DTO。輸入的話也是QUERY。另外Manger層還可以封裝對(duì)三方平臺(tái)的封裝。
Service層:負(fù)責(zé)業(yè)務(wù)模塊的邏輯應(yīng)用設(shè)計(jì),這一層還可以封裝成RPC服務(wù)供三方調(diào)用,輸出為DO或者DTO
Controllor層:這一層主要是接受外部請(qǐng)求,在restful編程中通常是對(duì)外接口,這一層直接和Service層通信,可以有少量的業(yè)務(wù)邏輯操作。同時(shí)具有入?yún)⑿r?yàn),數(shù)據(jù)對(duì)象轉(zhuǎn)換,異常處理的能力。該層輸入為Req,輸出為VO。
如果對(duì)入?yún)?duì)象進(jìn)行簡(jiǎn)單的校驗(yàn)的話是可以通過javax.validation來校驗(yàn)。
附錄:
領(lǐng)域模型說明
DO(Data Object)與數(shù)據(jù)庫(kù)表結(jié)構(gòu)一一對(duì)應(yīng),通過DAO層向上傳輸數(shù)據(jù)源對(duì)象。
DTO(Data Transfer Object)數(shù)據(jù)傳輸對(duì)象,Service或Manager向外傳輸?shù)膶?duì)象。
BO(Business Object)業(yè)務(wù)對(duì)象。由Service層輸出的封裝業(yè)務(wù)邏輯的對(duì)象。
VO(View Object)顯示層對(duì)象,通常是Web向模板渲染引擎層傳輸?shù)膶?duì)象。
Query:數(shù)據(jù)查詢對(duì)象,各層接收上層的查詢請(qǐng)求。注意超過2個(gè)參數(shù)的查詢需要封裝成Query對(duì)象
領(lǐng)域模型命名規(guī)約
數(shù)據(jù)對(duì)象:xxxDO,xxx即為數(shù)據(jù)表名。
數(shù)據(jù)傳輸對(duì)象:xxxDTO,xxx為業(yè)務(wù)領(lǐng)域相關(guān)的名稱,這個(gè)對(duì)象可能是DO的擴(kuò)展,可以表示部分對(duì)象的層級(jí)關(guān)系。
展示對(duì)象:xxxVO,xxx一般為前臺(tái)調(diào)用接口名稱,由前臺(tái)渲染和數(shù)據(jù)處理。
查詢對(duì)象:xxxQuery,xxx一般為查詢方法名稱。
另外我們可以在controller層增加xxxReq ,xxx一般為查詢接口名稱,作為控制層的入?yún)ⅰ?/p>
本文相關(guān)詞條概念解析:
對(duì)象
對(duì)象原本是一個(gè)哲學(xué)詞語(yǔ),表示客體事物不以人的意志為轉(zhuǎn)移而又與人的存在相關(guān)聯(lián)的某種規(guī)定性。對(duì)象從哲學(xué)詞語(yǔ)變成為一個(gè)愛情或與愛情有關(guān)的詞語(yǔ),絕對(duì)是當(dāng)代中國(guó)人的發(fā)明。大約從1950年代開始,由于談情說愛被視為小資產(chǎn)階級(jí)情調(diào),因而搞對(duì)象一詞便流行開來,幾乎成了談戀愛的代名詞,以其一本正經(jīng)的事務(wù)性和目的性取代了風(fēng)花雪月的談戀愛。但它之所以能夠大面積地流行開來,恐怕還是與中國(guó)人的傳統(tǒng)觀念和文化心態(tài)有關(guān)。
總結(jié)
以上是生活随笔為你收集整理的java项目 分模块管理_java 工程项目模块划分及各模块功能梳理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python毕业设计作品基于django
- 下一篇: 射频放大电路的优化及ADS仿真