|
最新稳定版请使用Spring Modulith 2.0.0! |
应用模块文档化
应用模块模型通过以下方式创建应用模块可用于创建文档摘要,用于纳入用 Ascidoc 编写的开发者文档中。
斯普林·莫杜利斯的记录者抽象可以生成两种不同类型的片段:
-
描述各个应用模块之间关系的C4和UML组件图
-
所谓的应用模块画布,是关于模块及其最相关元素(Spring beans、聚合根、发布和监听的事件以及配置属性)的表格概述。
此外记录者可以生成包含所有现有组件图和画布的聚合 Asciidoc 文件。
生成应用模块组件图
文档片段可以通过提交应用模块实例转变为记录者.
记录者-
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()
}
}
第一次通话记录者生成包含系统内所有模块的C4组件图。
第二次调用将创建额外的图表,仅包含单个模块及其直接依赖于画布的模块。
生成应用模块画布
应用模块画布可以通过调用来生成Documenter.writeModuleCanvases():
记录者-
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组件 |
服务业
存储 库
活动听众
配置属性
别人
|
集合根 |
|
已出版的活动 |
|
收听的事件 |
|
性能 |
|
它包括以下几个部分:
-
应用模块的基础包。
-
应用模块展示的春豆,按刻板印象分组。——换句话说,就是位于API包或任何命名接口包中的豆子。 这将检测由jMolecules架构抽象定义的组件刻板印象,同时也能检测标准Spring刻板印象注释。
-
公开聚合根——任何我们通过jMolecules找到的集合库或明确声明为聚合的实体。
-
模块发布的应用事件——这些事件类型需要用jMolecules来划分
@DomainEvent或实现其DomainEvent接口。 -
模块监听的应用事件——源自使用 Spring 注释的方法
@EventListener,@TransactionalEventListener, jMolecules'@DomainEventHandler或者 Beans 实现ApplicationListener. -
配置属性 — 由应用模块暴露的 Spring Boot 配置属性。 需要使用
Spring Boot配置处理器用来提取附加到属性上的元数据。
生成聚合文档
使用Documenter.writeDocumentation(...)一All-docs.adoc文件将被生成,链接所有生成的图表和应用模块画布。
我们可以通过调用手动生成聚合文档Documenter.writeAggregatingDocument():
记录者-
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()
}
}
聚合文档将包括所有现有的应用模块组件图和应用模块画布。 如果没有,则该方法不会生成输出文件。