该版本仍在开发中,尚未被视为稳定。最新稳定版请使用Spring Modulith 2.0.0spring-doc.cadn.net.cn

应用模块文档化

应用模块模型通过以下方式创建应用模块可用于创建文档摘要,纳入用 Ascidoc 编写的开发者文档中。Spring Modulith记录者抽象可以生成两种不同类型的片段:spring-doc.cadn.net.cn

  • 描述各个应用模块之间关系的C4和UML组件图spring-doc.cadn.net.cn

  • 所谓的应用模块画布,是关于模块及其最相关元素(Spring beans、聚合根、发布和监听的事件以及配置属性)的表格概述。spring-doc.cadn.net.cn

此外记录者可以生成包含所有现有组件图和画布的聚合 Asciidoc 文件。spring-doc.cadn.net.cn

生成应用模块组件图

文档片段可以通过提交应用模块实例转变为记录者.spring-doc.cadn.net.cn

生成应用模块组件图记录者
class DocumentationTests {

  ApplicationModules modules = ApplicationModules.of(Application.class);

  @Test
  void writeDocumentationSnippets() {

    new Documenter(modules)
      .writeModulesAsPlantUml()
      .writeIndividualModulesAsPlantUml();
  }
}
class DocumentationTests {
    private val modules = ApplicationModules.of(Application::class.java)

    @Test
    fun writeDocumentationSnippets() {
        Documenter(modules)
            .writeModulesAsPlantUml()
            .writeIndividualModulesAsPlantUml()
    }
}

第一次通话记录者生成包含系统内所有模块的C4组件图。spring-doc.cadn.net.cn

所有模块及其关系都以C4组件图形式呈现
图1。所有模块及其关系以C4分量图形式呈现

第二次调用将创建额外的图表,仅包含单个模块及其直接依赖于画布的模块。spring-doc.cadn.net.cn

从顺序模块开始的应用模块及其关系子集,以C4组件图形式呈现
图2。从顺序模块开始的部分应用模块及其关系,以C4分量图形式呈现

使用传统UML分量图

如果你更喜欢传统的UML风格分量图,可以调整一下图选而是采用该风格如下:spring-doc.cadn.net.cn

DiagramOptions.defaults()
  .withStyle(DiagramStyle.UML);
DiagramOptions.defaults()
  .withStyle(DiagramStyle.UML)

这会导致图表呈现如下:spring-doc.cadn.net.cn

所有模块及其关系都以UML组件图形式呈现
图3。所有模块及其关系以UML组件图形式呈现
从顺序模块开始的应用模块及其关系子集,以UML组件图形式呈现
图4。从顺序模块以UML组件图形式呈现的应用模块及其关系的子集

生成应用模块画布

应用模块画布可以通过调用来生成Documenter.writeModuleCanvases():spring-doc.cadn.net.cn

生成应用模块画布记录者
class DocumentationTests {

  ApplicationModules modules = ApplicationModules.of(Application.class);

  @Test
  void writeDocumentationSnippets() {

    new Documenter(modules)
      .writeModuleCanvases();
  }
}
class DocumentationTests {

  private val modules = ApplicationModules.of(Application::class.java)

  @Test
  fun writeDocumentationSnippets() {
    Documenter(modules)
        .writeModuleCanvases()
  }
}

默认情况下,文档将生成为Spring-Modulith-docs在你的构建系统构建文件夹中。生成的画布看起来像这样:spring-doc.cadn.net.cn

表1。应用模块画布示例

基础套装spring-doc.cadn.net.cn

com.acme.commerce.inventoryspring-doc.cadn.net.cn

Spring组件spring-doc.cadn.net.cn

集合根spring-doc.cadn.net.cn

已出版的活动spring-doc.cadn.net.cn

收听的事件spring-doc.cadn.net.cn

性能spring-doc.cadn.net.cn

  • acme.commerce.inventory.restock-thresholdC.A.C.C.数量. 阈值库存活动.股票做空应该是在库存更新时触发的。spring-doc.cadn.net.cn

它包括以下几个部分:spring-doc.cadn.net.cn

  • 应用模块的基础包。spring-doc.cadn.net.cn

  • 应用模块暴露的 Spring 豆子,按典型类型分组。——换句话说,就是位于 API 包或任何命名接口包中的豆子。这将检测由 jMolecules 架构抽象定义的组件刻板类型,同时也能检测标准 Spring 刻板类型注释。spring-doc.cadn.net.cn

  • 公开聚合根——任何我们通过jMolecules找到的集合库或明确声明为聚合的实体。spring-doc.cadn.net.cn

  • 模块发布的应用事件——这些事件类型需要用jMolecules来划分@DomainEvent或实现其DomainEvent接口。spring-doc.cadn.net.cn

  • 模块监听的应用事件——源自使用 Spring 注释的方法@EventListener,@TransactionalEventListener, jMolecules'@DomainEventHandler或者 Beans 实现ApplicationListener.spring-doc.cadn.net.cn

  • 配置属性——由应用模块公开的Spring Boot配置属性。需要使用Spring Boot配置处理器用来提取附加到属性上的元数据。spring-doc.cadn.net.cn

生成聚合文档

使用Documenter.writeDocumentation(...)All-docs.adoc文件将被生成,链接所有生成的图表和应用模块画布。我们可以通过调用手动生成聚合文档Documenter.writeAggregatingDocument():spring-doc.cadn.net.cn

生成聚合文档记录者
class DocumentationTests {

  ApplicationModules modules = ApplicationModules.of(Application.class);

  @Test
  void writeDocumentationSnippets() {

    new Documenter(modules)
        .writeAggregatingDocument();
  }
}
class DocumentationTests {

  private val modules = ApplicationModules.of(Application::class.java)

  @Test
  fun writeDocumentationSnippets() {
    Documenter(modules)
        .writeAggregatingDocument()
  }
}

聚合文档将包含所有现有的应用模块组件图和画布。如果没有,则该方法不会生成输出文件。spring-doc.cadn.net.cn