文档化应用模块
通过 ApplicationModules
创建的应用模块模型可用于生成文档片段,以便包含在 Asciidoc 格式的开发者文档中。Spring Modulith 的 Documenter
抽象可以生成两种不同类型的片段:
-
描述各个应用模块之间关系的 C4 和 UML 组件图
-
一种称为 *应用模块画布 (Application Module Canvas)* 的表格概览,其中包含关于模块及其最相关元素(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 组件 |
服务
Repository
事件监听器
配置属性
其他
|
聚合根 |
|
发布的事件 |
|
监听的事件 |
|
属性 |
|
它包含以下部分:
-
应用模块的基础包。
-
应用模块公开的 Spring Bean,按原型分组。—换句话说,位于 API 包或任何命名接口包中的 Bean。这将检测由jMolecules 架构抽象定义的组件原型,以及标准的 Spring 原型注解。
-
公开的聚合根—我们找到其 Repository 或通过 jMolecules 显式声明为聚合的任何实体。
-
模块发布的应用程序事件—这些事件类型需要使用 jMolecules 的 `@DomainEvent` 或实现其 `DomainEvent` 接口进行标记。
-
模块监听的应用程序事件—源自使用 Spring 的 `@EventListener`、`@TransactionalEventListener`、jMolecules 的 `@DomainEventHandler` 注解的方法,或实现 `ApplicationListener` 接口的 Bean。
-
配置属性—应用模块公开的 Spring Boot 配置属性。需要使用 `spring-boot-configuration-processor` Artifact 来提取附加到属性的元数据。
生成聚合文档
使用 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()
}
}
聚合文档将包含任何现有的应用模块组件图和应用模块画布。如果不存在这些文件,则此方法不会生成输出文件。