a DDD project template in golang
- Web Framework: chi
- Logging Library: zap
- Data Access Library
- Configuration Library: multiconfig
# download project generator
go get -u github.com/jacexh/gdp@master
gdp
- 从Gin切换到Chi
- 参考Project Layout调整项目布局
- Graceful Shutdown的exit code改成0
- 实现Domain Event
- 实现trace功能,确保request id可以在application、infra等层传递,可支持其他对象的传递
- 实现Graceful Shutdown
- 独立option模块,减少main.go文件代码量
- 配置文件移入
./conf
目录
- 使用
xorm.io
替换github.com/didi/gendry
- 升级gin/zap等依赖版本
- dto <--> entity, do <--> entity 转换层更加显性地表达
- 区分
DataObject
以及Entity
- 修改目录名称
infrastructure/repository
->infrastructure/persistence
基于依赖反转原则以及六边形架构重构整个项目
- 层名称变更:
sevice
->application
,以及repository
->infrastructure
Repository
定义在Domain
层内Application
+Domain
使用依赖反转,具备了更好的可测试性- 更清晰的分支管理:
master
分支为golang项目,template
分支为模板 - 严格区分了
Entity
、ValueObject
、DataTransferObject
、DomainEvent
等