DDD项目结构规范

167 阅读1分钟

项目命名

对于live后端底层服务使用live-xxx-service的对项目进行命名

项目模块命

live-xxx-api对外暴露的接口定义
live-xxx-start程序主入口
live-xxx-app应用层;提供简单的应用服务
live-xxx-domain领域层;业务核心逻辑
live-xxx-infrastructure基础设施层;

包结构定义

api

packagepackage说明
com.live.service服务提供RPC接口定义:1. 命名规范XxxRemoteService,比如:AnchorRemoteService 2. 接口返回值需要使用Response进行包装,Response泛型必须指定返回类型;3. 写接口必须使用@CommonExecutor注解打印参数;
com.live.commonenums对外暴露的枚举类包
constants对外暴露的常量类包
utils对外暴露的工具类包
com.live.requestRPC接口的请求参数 XxxRequest
com.live.dtoXxxDTO,API接口返回模型

start

packagepackage说明
com.live.serviceimplRPC接口的实现,输出Response

app

packagepackage说明
com.live.app.appservice参数校验,提供简单的应用服务XxxAS
com.live.app.convert请求参数转成,领域对象转换成API返回模型XxxConvert

domain

packagepackage说明
com.live.domainaggr聚合 XxxAggr
entity实体XxxEntity
valueobject值对象XxxVO
factory工厂 XxxFactory
repository仓储XxxRepository
service领域服务定义XxxService
service.impl领域服务实现XxxServiceImpl
com.live.external定义需要依赖外部接口XxxService
com.live.event定义领域事件消息 XxxEvent
com.live.convert请求参数转成,领域对象转换成API返回模型XxxConvert

infrastructure

packagepackage说明
com.live.domain.convert数据库对象转成领域对象
com.live.domain.external定义外部接口的实现,封装对RPC的调用
com.live.domain.config数据库,redis,Apollo等配置
com.live.domain.dalmapperMyBatics mapper
dataobjectDB映射模型
com.live.domain.repository数据仓库的实现