工程规范
這幾天在寫一個內(nèi)部的小需求,需求很簡單。但是在搭建工程的時候遇到了不少問題,本來一天半能搞定所有的東西上線,但是不符合公司上線的規(guī)范要求重構(gòu)。特此記錄一下
項目結(jié)構(gòu)
大部分項目應該使用CRUD模式,只有在絕對必要的時候使用更為負載CQRS模式。
Java服務的結(jié)構(gòu)如下(假設項目名為demo):
- demo-api: HTTP 服務入口 (包括dubbo服務,controller等)
- demo-common: 公用代碼 (包括enmus,exception,utils等等)
- demo-contract: RPC服務接口(原生java不應該依賴任何東西,比如rpc服務接口,自定義的HttpRequest實體類等)
- demo-core: command操作/應該僅用于CQPS模式
- demo-domain: 領(lǐng)域?qū)ο?/li>
- demo-integration: 外部HTTP接口訪問層
- demo-logic: 業(yè)務邏輯層/用于CRUD模式
- demo-manager: 通用業(yè)務邏輯層(新增)
- demo-mq: 消息隊列接入層
- demo-repository: 數(shù)據(jù)庫訪問層/DAO層
- demo-query: 在線業(yè)務邏輯層/應該僅用于CQRS 模式
- demo-service: RPC 服務入口
- demo-task: 離線任務
- demo-tool: 工具
- docs: 文檔
- 其他: 項目特有的其他目錄
應用分層
以CRUD模式為例子
?
?
- Open API層:可直接封裝 Service 接口暴露成 RPC 接口 ; 通過 Web 封裝成 http 接口 ; 網(wǎng)關(guān)控制層等。
- API層:主要是對訪問控制進行轉(zhuǎn)發(fā),各類基本參數(shù)校驗,或者不復用的業(yè)務簡單處理等。
- Service層: RPC接口層
- Logic層:相對具體的業(yè)務邏輯服務層。
- Manager層:通用業(yè)務處理層,它有如下特征:
- 對第三方平臺封裝的層,預處理返回結(jié)果及轉(zhuǎn)化異常信息 ;
- ?對 Logic 層通用能力的下沉,如緩存方案、中間件通用處理 ;
- ?與 DAO 層交互,對 DAO 的業(yè)務通用能力的封裝。
- DO(Data Object): 與數(shù)據(jù)庫表結(jié)構(gòu)一一對應,通過 DAO 層向上傳輸數(shù)據(jù)源對象。
- DTO(Data Transfer Object): 數(shù)據(jù)傳輸對象, Logic 和 Manager 向外傳輸?shù)膶ο蟆?/li>
- BO(Business Object): 業(yè)務對象。可以由 Logic 層輸出的封裝業(yè)務邏輯的對象。
- QUERY: 數(shù)據(jù)查詢對象,各層接收上層的查詢請求。注:超過 2 個參數(shù)的查詢封裝,禁止使用 Map 類來傳輸。
- VO(View Object): 顯示層對象,通常是 Web 向前端渲染傳輸?shù)膶ο蟆?/li>
?
轉(zhuǎn)載于:https://www.cnblogs.com/WegYcx/p/8033415.html
總結(jié)
- 上一篇: @responseBody 返回更多数据
- 下一篇: java学习之单例模式(饿汉式与懒汉式)