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等