JPA table主鍵生成策略(在JPA中table策略是首推!!!)html
前有幸拜讀過諸多大神關於DDD的實現落地等文章,學習較多,受益不淺,在此推薦 : github
http://www.javashuo.com/article/p-plrdmasi-gg.html
https://blog.csdn.net/k6T9Q8XKs6iIkZPPIFq/article/details/78909897
https://www.cnblogs.com/netfocus/archive/2011/10/10/2204949.html
https://blog.csdn.net/bluishglc/article/details/6681253spring
下面參考了DDD官方的結構,總結了前輩們的相關經驗,再根據自身對微服務和DDD學習和理解,作了一個用SpringCloud搭建的最基本的結構例子。我的才疏學淺,若有雷同或是不當之處,望各位大佬見諒和幫忙指正。架構
首先引經據典 , 參考官方架構草圖,DDD整體結構分爲四層 : Infrastructure(基礎實施層),Domain(領域層),Application(應用層),Interfaces(表示層,也叫用戶界面層或是接口層),各個層面的做用下面介紹。微服務
對於DDD的設計而言,最重要的是如何去劃分領域,劃分好邊界。在代碼設計上,以前有看到過大佬用模塊(Modules)來進行上下文界定和劃分。如圖下 : 工具
而對於微服務而言,就很是適合從業務上去劃分以上的各個Modules,劃分好各個業務板塊。學習
微服務 + DDD,我的以爲應該是首先是從微服務的角度(如何劃分微服務)考慮去劃分大的業務模塊,每個微服務都應該是一個能夠單獨部署,各司其職的模塊;ui
而在微服務實際開發中,結合DDD的思想去劃分全部屬於本身的領域。.net
如圖示例,對於我這個Project而言,是模塊已經劃分好的微服務應用,代碼設計上就分爲 Infrastructure,Domain,Application,Interfaces :
Infrastructure 層 : 基礎實施層,向其餘層提供通用的技術能力(好比工具類,第三方庫類支持,經常使用基本配置,數據訪問底層實現)
Domain層 : 主要負責表達業務概念,業務狀態信息和業務規則;是整個系統的核心層,幾乎所有的業務邏輯會在該層實現。
Application層 : 相對於領域層,應用層是很薄的一層,應用層定義了軟件要完成的任務,要儘可能簡單。
注 : 這裏圖裏面所說的對內對外,對程序而言,事實上是從展示層調用應用層,應用層調用領域層,領域層或調用基礎實施層。
Interfaces層 : 負責向用戶顯示信息和解釋用戶命令,請求應用層以獲取用戶所須要展示的數據(好比獲取首頁的商品數據)
以上,就是我的 對 微服務+DDD的代碼結構示例,完整代碼詳見 https://github.com/EalenXie/springcloud-microservice-ddd
感謝各位提出意見和支持。