工程分层

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