【问题标题】:DDD - java 9 modules project ogranizationDDD - java 9 模块项目组织
【发布时间】:2020-02-26 15:19:21
【问题描述】:

我正在尝试使用 java 9 中的六边形架构(使用 maven 模块)来组织 DDD 项目。是否有任何工作示例已经在生产系统中使用?所以,到目前为止,我只知道如何做到这一点:

这里我有 domain 模块,它包含所有命令、事件、域模型(带有聚合、实体和值对象)和存储库接口 + 域服务接口(如果在基础设施上中继)和实现。其他application 模块包含应用程序服务,其中我有应用程序的“用例”(协调加载聚合等的简单方法)。

现在这些十六进制架构的适配器怎么样?每个适配器是否应该在模块中分开(例如mysql-adapter,我可以在其中实现依赖于基础设施的存储库?另外,为rabbitmq聚合有单独的模块?

任何关于这方面的例子都会很棒!

【问题讨论】:

    标签: java module architecture domain-driven-design hexagonal-architecture


    【解决方案1】:

    我正在用 java 9 和 maven 编写一个六边形架构示例。还没写完,写完我会发布的。

    但到目前为止,我可以告诉你我的方法:

    • 六边形的一个模块(它不需要其他模块)。对于每个端口,我都有一个模块导出的包。

    • 每个适配器一个模块。需要六边形模块。

    • 一个主模块。需要六边形和所有适配器模块。没有其他模块需要主模块。它构建整个系统并运行驱动适配器。

    为了为每个驱动端口选择一个适配器,我使用服务加载器机制。


    在这个例子中我没有使用 DDD,但是如果我使用它,结构会是:

    • 六边形将是一个聚合器模块(无源代码),只有 2 个需要传递到应用程序模块和域模块。

    • 应用程序模块需要域模块。它导出的包是驱动端口(用例),也可能是驱动端口(由驱动适配器实现。

    • 域不需要模块。它导出作为驱动端口的包。


    我推荐 Sander Mark 和 Paul Bakker 的《Java 9 Modularity》一书。

    我会在

    上发表一篇文章

    https://softwarecampament.wordpress.com/portsadapters/

    如果你想在完成后看看我在 github 上的示例。

    【讨论】:

      猜你喜欢
      • 2019-02-06
      • 1970-01-01
      • 2010-09-13
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      • 2018-07-15
      • 2018-03-18
      • 1970-01-01
      相关资源
      最近更新 更多