アプリケーションモジュールのドキュメント化
ApplicationModules
経由で作成されたアプリケーションモジュールモデルを使用して、Asciidoc で記述された開発者ドキュメントに含めるドキュメントスニペットを作成できます。Spring Modulith の Documenter
抽象化では、次の 2 種類のスニペットを生成できます。
個々のアプリケーションモジュール間の関連を説明する C4 および UML コンポーネント図
いわゆる Application Module Canvas。モジュールに関する表形式の概要と、モジュール内の最も関連性の高い要素 (Spring Bean、集約ルート、公開およびリッスンされるイベント、構成プロパティ)。
アプリケーションモジュールコンポーネント図の生成
ドキュメントのスニペットは、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)
@Test
fun writeDocumentationSnippets() {
Documenter(modules)
.writeModulesAsPlantUml()
.writeIndividualModulesAsPlantUml()
}
}
Documenter
の最初の呼び出しでは、システム内のすべてのモジュールを含む C4 コンポーネント図が生成されます。
2 番目の呼び出しでは、個々のモジュールと、キャンバス上で直接依存するモジュールのみを含む追加の図が作成されます。
従来の UML コンポーネント図の使用
従来の UML スタイルのコンポーネント図を好む場合は、次のように DiagramOptions
を調整してそのスタイルを使用します。
Java
Kotlin
DiagramOptions.defaults()
.withStyle(DiagramStyle.UML);
DiagramOptions.defaults()
.withStyle(DiagramStyle.UML)
これにより、図は次のようになります。
アプリケーションモジュールキャンバスの生成
アプリケーションモジュールキャンバスは、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)
@Test
fun writeDocumentationSnippets() {
Documenter(modules)
.writeModuleCanvases()
}
}
デフォルトでは、ドキュメントはビルドシステムのビルドフォルダー内の spring-modulith-docs
フォルダーに生成されます。生成されたキャンバスは次のようになります。
基本パッケージ |
|
---|---|
Spring コンポーネント | サービス
リポジトリ
イベントリスナー
構成プロパティ
その他
|
集約ルート |
|
公開されたイベント |
|
聞いたイベント |
|
プロパティ |
|
これは次のセクションで構成されます。
アプリケーションモジュールの基本パッケージ。
アプリケーションモジュールによって公開される Spring Bean は、ステレオタイプによってグループ化されます。 — 言い換えれば、API パッケージまたは名前付きインターフェースパッケージのいずれかにある Bean です。これにより、jMolecules アーキテクチャ抽象化 [GitHub] (英語) によって定義されたコンポーネントステレオタイプだけでなく、標準の Spring ステレオタイプアノテーションも検出されます。
露出した集約ルート — リポジトリが見つかったエンティティ、または jMolecules を介して集約として明示的に宣言されたエンティティ。
モジュールによって公開されたアプリケーションイベント — これらのイベント型は、jMolecules
@DomainEvent
を使用して境界設定するか、そのDomainEvent
インターフェースを実装する必要があります。モジュールによってリッスンされるアプリケーションイベント — Spring の
@EventListener
、@TransactionalEventListener
、jMolecules の@DomainEventHandler
、またはApplicationListener
を実装する Bean でアノテーションが付けられたメソッドから派生します。構成プロパティ — Spring Boot アプリケーションモジュールによって公開される構成プロパティ。プロパティに添付されたメタデータを抽出するには、
spring-boot-configuration-processor
アーティファクトを使用する必要があります。