应用模块文档化

应用模块模型通过以下方式创建应用模块可用于创建文档摘要,用于纳入用 Ascidoc 编写的开发者文档中。 斯普林·莫杜利斯的记录者抽象可以生成两种不同类型的片段: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

  • 应用模块展示的春豆,按刻板印象分组。——换句话说,就是位于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