DDD 项目包结构 + 调用关系说明

包结构

package

|- pom.xml

|- wenwo-cloud-core-domain-doctor-service-feign

|   |- pom.xml

|   |- src/main/java/com/wenwo/cloud/core/domain/doctor/service

|   |   |- infrastructure // 基础层

|   |   |   \- constants // 通用常量

|   |   |       \- ErrorCode.java

|   |   \- interfaces // 接口层

|   |       |- feign // 对外暴露 Feign

|   |       |   |- FeignAutoConfiguration.java // 自动 Feign 配置

|   |       |   |- base

|   |       |   |   \- ConsultFeign.java // 实际业务 FeignClient

|   |       |   \- fallback // FeignClient 降级处理

|   |       |- frm // FeignClient 请求入参

|   |       |   \- AddConsultFrm.java

|   |       \- vo // FeignClient 请求返回值

|   |           \- ConsultVO.java

|   \- src/main/resources

|       \- META-INF

|           \- spring.factories // 自动配置 Feign 扫描

\- wenwo-cloud-core-domain-doctor-service-provider

    |- pom.xml

    |- src/main/java/com/wenwo/cloud/core/domain/doctor/service

    |   |- CoreDomainDoctorServiceApplication.java // Main 函数

    |   |- application // 应用层

    |   |   |- event // 事件

    |   |   |   |- publish // 事件发布

    |   |   |   |   \- ConsultCreatedEventPublish.java

    |   |   |   \- subscribe // 事件订阅

    |   |   |       \- OrderPaidSuccessSubscribe.java

    |   |   \- service // 应用服务,具体的业务服务,相当于以前的 Service 和半个 Controller

    |   |       \- ConsultService.java

    |   |- domain // 领域层

    |   |   \- consult // 领域聚合包

    |   |       |- entity // 领域实体

    |   |       |   \- Consult.java

    |   |       \- face // 仓储接口

    |   |           \- ConsultRepository.java

    |   |- infrastructure // 基础层

    |   |   |- aspect // 切面

    |   |   |- config // 配置

    |   |   |- constants // 常量,不用对外暴露的常量

    |   |   |- core // 核心工具

    |   |   |- feign // 没有提供 Feign 包的外部服务,本地写的 FeignClient 放这里

    |   |   |   |- base

    |   |   |   \- fallback

    |   |   \- utils // 通用工具类

    |   \- interfaces // 接口层

    |       |- assembler // 聚合,主要承担 DTO(Data Transfer Object) <==> DO(Domain Object)

    |       |   \- ConsultAssembler.java

    |       \- facade // 门面层,提供 FeignClient 实现,以及前端接口

    |           \- v1 // 根据版本区分 API

    |               \- ConsultFacade.java

    \- src/main/resources

        |- bootstrap.yml

        \- logback-spring.xml

核心包说明

interfaces.feign

提供给外部的 Feign 接口,以下的 interfaces.facade 实现该接口提供 web 访问

application.service

应用服务,相当于三层架构中的 service 和部分 controller 逻辑

调用外部服务和第三方服务,再此进行业务逻辑和数据请求拼接

domain.*.entity

领域实体放在这里,这里的实体模型采用充血模型的设计

interfaces.assembler

聚合转换类,领域实体、入参和出参互相转换

interfaces.facade

提供 web 访问,相当于三层架构中 controller

调用关系

DDD 项目包结构 + 调用关系说明_第1张图片

实体说明

Frm

  • 请求入参
  • 允许直接传到 ApplicationService

VO

  • 请求返回值

Entity

  • 领域实体

你可能感兴趣的:(java)