工程分层
|- Types(对外暴露的Domain Primitives的地方,不依赖任何类库 纯POJO)
|- Domain(领域模型层,核心业务逻辑的集中地 包含有状态的Entity、领域服务Domain Service、以及各种外部依赖的接口类 如Repository、ACL、中间件等。Domain模块仅依赖Types模块 纯POJO)
|- Application(业务上下文,组织领域对象功能调用,以及一些不归属于领域对象功能的其他功能 仅依赖Domain模块 纯POJO)
|- Infrastructure (基础建设层,负责领域对象中的数据存储和读取 包含了Persistence、Messaging、External等模块。比如:Persistence模块包含数据库DAO的实现,包含Data Object、ORM Mapper、Entity到DO的转化类等。Persistence模块要依赖具体的ORM类库,比如MyBatis。如果需要用Spring-Mybatis提供的注解方案,则需要依赖Spring。)
|- Web(对外接口层 包含Controller等相关代码。如果用SpringMVC则需要依赖Spring)
|- Start(SpringBoot的启动类)
Start(SpringBoot的启动类)
Web(对外接口层 包含Controller等相关代码。如果用SpringMVC则需要依赖Spring)
Domain(领域模型层,核心业务逻辑的集中地)
├── Types(对外暴露的Domain Primitives的地方)
├── Entity(实体对象)
├── Service(组件编排接口)
├── ServiceImpl(组件编排实现)
├── Repository(Entity对象的存储和读取接口)
Application(业务逻辑接口)
├── DTO
├── ApplicationImpl(业务逻辑实现)
Infrastructure(基础建设层,负责领域对象中的数据存储和读取)
├── RepositoryImpl(Entity对象的存储和读取实现)
├── Persistence(DO对象的存储和读取)