|
此版本仍在开发中,尚未被视为稳定版。如需最新稳定版本,请使用 Spring Modulith 2.0.4! |
记录应用程序模块
通过 ApplicationModules 创建的应用模块模型可用于生成文档片段,以便嵌入到使用 Asciidoc 编写的开发者文档中。
Spring Modulith 的 Documenter 抽象可以生成两种不同类型的片段:
-
C4 和 UML 组件图,描述各个应用程序模块之间的关系
-
所谓的应用模块画布,是关于该模块及其最关键元素(Spring Bean、聚合根、发布和监听的事件以及配置属性)的表格概览。
此外,Documenter 可以生成一个聚合的 Asciidoc 文件,其中包含所有现有的组件图和画布。
正在生成应用程序模块组件图
文档片段可以通过将 ApplicationModules 实例传递给 Documenter 来生成。
Documenter 生成应用程序模块组件图-
Java
-
Kotlin
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()
}
}
对 Documenter 的首次调用将生成一个包含系统中所有模块的 C4 组件图。
第二次调用将创建额外的图表,这些图表仅包含单个模块及其在画布上直接依赖的模块。
生成应用程序模块画布
应用程序模块画布可以通过调用 Documenter.writeModuleCanvases() 生成:
Documenter 生成应用程序模块画布-
Java
-
Kotlin
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 组件 |
服务
仓库
事件监听器
配置属性
其他
|
聚合根 |
|
已发布的事件 |
|
监听的事件 |
|
属性 |
|
它包含以下部分:
-
应用程序模块的基础包。
-
由应用模块暴露的 Spring Bean,按构造型(stereotype)分组。 — 换句话说,即位于 API 包或任何命名接口包中的 Bean。 这将检测由 jMolecules 架构抽象 定义的组件构造型,同时也包括标准的 Spring 构造型注解。
-
暴露的聚合根 — 任何我们为其找到仓库或通过 jMolecules 显式声明为聚合的实体。
-
模块发布的应用事件 — 这些事件类型需要使用 jMolecules
@DomainEvent进行界定,或实现其DomainEvent接口。 -
模块监听的应用事件 — 源自使用 Spring 的
@EventListener、@TransactionalEventListener,jMolecules 的@DomainEventHandler注解标注的方法,或实现了ApplicationListener接口的 Bean。 -
配置属性 — 由应用模块暴露的 Spring Boot 配置属性。 需要使用
spring-boot-configuration-processor构件来提取附加在属性上的元数据。
生成聚合文档
当使用 Documenter.writeDocumentation(…) 时,将生成一个 all-docs.adoc 文件,链接所有生成的图表和应用程序模块画布。
我们可以通过调用 Documenter.writeAggregatingDocument() 手动生成聚合文档:
Documenter 生成聚合文档-
Java
-
Kotlin
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()
}
}
聚合文档将包含任何现有的应用程序模块组件图和应用程序模块画布。 如果不存在,则此方法不会生成输出文件。