付録
付録 A: Spring Boot 互換性
Spring Modulith バージョン | Spring Boot バージョン (コンパイルされた) | Spring Boot バージョン (テストされた例) | jMolecules (コンパイルされた) | jMolecules (テスト済み) |
---|---|---|---|---|
1.4 (スナップショット) | 3.4 | 3.1, 3.2, 3.3, 3.4 | 2023.2 | 2023.2、2025.0 RC2 |
1.3 | 3.4 | 3.1, 3.2, 3.3, 3.4 | 2023.1 | 2023.1、2023.2、2025.0 RC2 |
1.2 | 3.3 | 3.1, 3.2, 3.3, 3.4 | 2023.1 | 2023.1、2023.2、2025.0 RC2 |
1.1 | 3.2 | 3.1, 3.2, 3.3, 3.4 | 2023.1 | 2023.1、2023.2、2025.0 RC2 |
付録 B: Spring Modulith 構成プロパティ
プロパティ | デフォルト値 | 説明 |
---|---|---|
|
| 非同期処理の終了のデフォルトを構成するかどうか、つまりタスクの完了を 2 秒間待機するかどうか。詳細については、 |
| なし | アプリケーションモジュールを検出するために適用される戦略。 |
|
| イベント公開を完了としてマークする方法。次の値がサポートされています。
|
|
| イベントの外部化を有効にするかどうか。 |
|
| JDBC イベント発行スキーマを初期化するかどうか。 |
| イベント発行テーブルのスキーマ名。指定しない場合、テーブルはスキーマ修飾されません。 | |
|
|
|
|
| MongoDB のトランザクションを自動的に有効にするかどうか。データベースをレプリカセットで実行する必要があります。 |
|
| インデックスを作成するかどうか。 |
|
|
|
|
| アプリケーションの再起動時に未処理のイベント公開を再公開するかどうか。他のインスタンスがまだイベントを処理している可能性があるため、通常、マルチインスタンスデプロイでは推奨されません。 |
|
|
|
|
| 発行するイベントの粒度。( |
|
| 週の境界を決定するときに使用する |
|
| 公開されるイベントの日付のタイムゾーン。 |
|
| 1.3 以降は非推奨です。 |
| なし | これは、定義済み値 |
| なし | 変更されたファイルのセットを計算するコミットハッシュ。通常、CI 環境では、最後の正常なビルド以降のすべての変更を考慮するために伝播されます。 |
付録 C: Spring Modulith モジュール
スターター | 一般的な範囲 | インクルード |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
モジュール | 一般的な範囲 | 説明 |
---|---|---|
|
| アクチュエーターを介してアプリケーションモジュール構造を公開する Spring Boot アクチュエーター。 |
|
| Spring Modulith のデフォルトの動作をカスタマイズするために本番コード内で使用される抽象化。 |
|
| アプリケーションモジュールキャンバスに含めるために Javadoc を抽出するアノテーションプロセッサー。 |
|
| コアアプリケーションモジュールモデルと API。 |
|
|
|
|
| AMQP のイベント外部化サポート。 |
|
| Spring Modulith のイベント機能をカスタマイズするための API。 |
|
| イベント発行レジストリのコア実装と統合抽象化 |
|
| Jackson ベースの |
|
|
|
|
| JMS のイベント外部化のサポート。 |
|
|
|
|
| Kafka のイベント外部化のサポート。 |
|
| Spring メッセージング |
|
| MongoDB ベースの |
|
|
|
|
| アプリケーションモジュール構造に基づいたテスト実行の最適化。詳細については、こちらを参照してください。 |
|
| Passage of Time イベントの実装については、こちらで説明されています。 |
|
| 可観測性インフラストラクチャについては、こちらで説明します。 |
|
| 実行時に |
|
| 統合テストのサポート。詳細については、こちらを参照してください。 |
付録 D: 非推奨モジュール
モジュール | 廃止予定日 | 説明 |
---|---|---|
|
|
|
|
|
|
付録 E: イベント発行レジストリスキーマ
JDBC ベースのイベント発行レジストリサポートでは、データベースに次のデータベーススキーマが存在することが想定されています。Spring Modulith でスキーマを作成する場合は、アプリケーションプロパティ spring.modulith.events.jdbc-schema-initialization.enabled
を true
に設定してください。
H2
CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION
(
ID UUID NOT NULL,
COMPLETION_DATE TIMESTAMP(9) WITH TIME ZONE,
EVENT_TYPE VARCHAR(512) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
PUBLICATION_DATE TIMESTAMP(9) WITH TIME ZONE NOT NULL,
SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
PRIMARY KEY (ID)
);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_BY_LISTENER_ID_AND_SERIALIZED_EVENT_IDX ON EVENT_PUBLICATION (LISTENER_ID, SERIALIZED_EVENT);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX ON EVENT_PUBLICATION (COMPLETION_DATE);
HSQLDB
CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION
(
ID UUID NOT NULL,
COMPLETION_DATE TIMESTAMP(9),
EVENT_TYPE VARCHAR(512) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
PUBLICATION_DATE TIMESTAMP(9) NOT NULL,
SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
PRIMARY KEY (ID)
);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_BY_LISTENER_ID_AND_SERIALIZED_EVENT_IDX ON EVENT_PUBLICATION (LISTENER_ID, SERIALIZED_EVENT);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX ON EVENT_PUBLICATION (COMPLETION_DATE);
MariaDB
CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION
(
ID VARCHAR(36) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
EVENT_TYPE VARCHAR(512) NOT NULL,
SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
PUBLICATION_DATE TIMESTAMP(6) NOT NULL,
COMPLETION_DATE TIMESTAMP(6) DEFAULT NULL NULL,
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);
Microsoft SQL Server
IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'EVENT_PUBLICATION')
CREATE TABLE EVENT_PUBLICATION
(
ID VARCHAR(36) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
EVENT_TYPE VARCHAR(512) NOT NULL,
SERIALIZED_EVENT VARCHAR(MAX) NOT NULL,
PUBLICATION_DATE DATETIME2(6) NOT NULL,
COMPLETION_DATE DATETIME2(6) NULL,
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);
MySQL
CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION
(
ID VARCHAR(36) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
EVENT_TYPE VARCHAR(512) NOT NULL,
SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
PUBLICATION_DATE TIMESTAMP(6) NOT NULL,
COMPLETION_DATE TIMESTAMP(6) DEFAULT NULL NULL,
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);
PostgreSQL
CREATE TABLE IF NOT EXISTS event_publication
(
id UUID NOT NULL,
listener_id TEXT NOT NULL,
event_type TEXT NOT NULL,
serialized_event TEXT NOT NULL,
publication_date TIMESTAMP WITH TIME ZONE NOT NULL,
completion_date TIMESTAMP WITH TIME ZONE,
PRIMARY KEY (id)
);
CREATE INDEX IF NOT EXISTS event_publication_serialized_event_hash_idx ON event_publication USING hash(serialized_event);
CREATE INDEX IF NOT EXISTS event_publication_by_completion_date_idx ON event_publication (completion_date);
付録 F: モジュリスからの移行
o.m.model.Modules
はo.s.m.model.ApplicationModules
に名前変更されましたo.m.model.ModuleDetectionStrategy
はo.s.m.model.ApplicationModuleDetectionStrategy
に名前変更されました@o.m.test.ModuleTest
は@o.s.m.test.ApplicationModuleTest
に名前変更されましたo.m.docs.Documenter.Options
はo.s.m.docs.Documenter.DiagramOptions
に名前変更されましたコンポーネント図の図スタイルがデフォルトで
DiagramStyle.C4
になるようになりました (DiagramOptions.withStyle(DiagramStyle.UML)
を呼び出してオーバーライドする)モジュールキャンバスは、デフォルトで非公開型を非表示にします。キャンバスに application-module-internal 型を含めるには、
CanvasOptions
を… .revealInternals()
に構成します。コンポーネント図とアプリケーションモジュールキャンバスの出力フォルダーは、ビルドのターゲットフォルダー (Maven の
target
など) にあるmoduliths-docs
からspring-modulith-docs
に移動しました。