付録
付録 A: Spring Boot 互換性
| Spring Modulith バージョン | Spring Boot バージョン (コンパイルされた) | Spring Boot バージョン (テストされた例) | jMolecules (コンパイルされた) | jMolecules (テスト済み) |
|---|---|---|---|---|
2.0 (スナップショット) | 4.0 SNAPSHOT | 4.0 スナップショットとマイルストーン | 2023.2 | 2023.2、2025.0 RC2 |
1.4 | 3.5 | 3.1, 3.2, 3.3, 3.4, 3.5 | 2023.2 | 2023.2、2025.0 RC2 |
1.3 | 3.4 | 3.1, 3.2, 3.3, 3.4, 3.5 | 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 のトランザクションを自動的に有効にするかどうか。データベースをレプリカセットで実行する必要があります。 |
|
| Neo4j イベント発行イベントハッシュプロパティにインデックスを作成するかどうか。 |
|
|
|
|
| アプリケーションの再起動時に未処理のイベント公開を再公開するかどうか。他のインスタンスがまだイベントを処理している可能性があるため、通常、マルチインスタンスデプロイでは推奨されません。 |
|
| 古いイベントの公開を確認する間隔。 |
|
| この期間を過ぎると、処理中の状態のイベント公開は古いものと見なされます。 |
|
| この期間を過ぎると、公開状態にあるイベント公開は古いものと見なされます。 |
|
| この期間が過ぎると、再送信された状態のイベント公開は古いものと見なされます。 |
|
|
|
|
| 発行するイベントの粒度。( |
|
| 週の境界を決定するときに使用する |
|
| 公開されるイベントの日付のタイムゾーン。 |
|
| 1.3 以降は非推奨です。 |
|
| Configures whether to enable the module-specific Flyway customization. If enabled, the Flyway instance configured with the application will be augmented to additionally executed migrations located in module-specific sub-folders of the configured locations, executed in the order of module dependencies. This allows test executions to only apply the migrations needed for the actual test run. See this section for details. |
|
| Whether to verify the application module arrangement during application startup. Requires the |
| なし | これは、定義済み値 |
| なし | 変更されたファイルのセットを計算するコミットハッシュ。通常、CI 環境では、最後の正常なビルド以降のすべての変更を考慮するために伝播されます。 |
付録 C: Spring Modulith モジュール
| スターター | 一般的な範囲 | インクルード |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| モジュール | 一般的な範囲 | 説明 |
|---|---|---|
|
| アクチュエーターを介してアプリケーションモジュール構造を公開する Spring Boot アクチュエーター。 |
|
| Spring Modulith のデフォルトの動作をカスタマイズするために本番コード内で使用される抽象化。 |
|
| アプリケーションモジュールキャンバスに含めるために Javadoc を抽出するアノテーションプロセッサー。 |
|
| コアアプリケーションモジュールモデルと API。 |
|
|
|
|
| AMQP のイベント外部化サポート。 |
|
| Spring Modulith のイベント機能をカスタマイズするための API。 |
|
| イベント発行レジストリのコア実装と統合抽象化 |
|
| Jackson ベースの |
|
|
|
|
| JMS のイベント外部化のサポート。 |
|
|
|
|
| Kafka のイベント外部化のサポート。 |
|
| Spring メッセージング |
|
| MongoDB ベースの |
|
|
|
|
| アプリケーションモジュール構造に基づいたテスト実行の最適化。詳細については、こちらを参照してください。 |
|
| Passage of Time イベントの実装については、こちらで説明されています。 |
|
| 可観測性インフラストラクチャについては、こちらで説明します。 |
|
| 実行時に |
|
| 統合テストのサポート。詳細については、こちらを参照してください。 |
付録 D: イベント発行レジストリスキーマ
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,
STATUS VARCHAR(20),
COMPLETION_ATTEMPTS INT,
LAST_RESUBMISSION_DATE TIMESTAMP(9) WITH TIME ZONE,
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);CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE
(
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,
`STATUS` VARCHAR(20),
COMPLETION_ATTEMPTS INT,
LAST_RESUBMISSION_DATE TIMESTAMP(9) WITH TIME ZONE,
PRIMARY KEY (ID)
);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE_BY_LISTENER_ID_AND_SERIALIZED_EVENT_IDX ON EVENT_PUBLICATION_ARCHIVE (LISTENER_ID, SERIALIZED_EVENT);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE_BY_COMPLETION_DATE_IDX ON EVENT_PUBLICATION_ARCHIVE (COMPLETION_DATE);Legacy schemas
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);CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE
(
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_ARCHIVE_BY_LISTENER_ID_AND_SERIALIZED_EVENT_IDX ON EVENT_PUBLICATION_ARCHIVE (LISTENER_ID, SERIALIZED_EVENT);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE_BY_COMPLETION_DATE_IDX ON EVENT_PUBLICATION_ARCHIVE (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,
STATUS VARCHAR(20),
COMPLETION_ATTEMPTS INT,
LAST_RESUBMISSION_DATE TIMESTAMP(9),
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);CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE
(
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,
STATUS VARCHAR(20),
COMPLETION_ATTEMPTS INT,
LAST_RESUBMISSION_DATE TIMESTAMP(9),
PRIMARY KEY (ID)
);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE_BY_LISTENER_ID_AND_SERIALIZED_EVENT_IDX ON EVENT_PUBLICATION_ARCHIVE (LISTENER_ID, SERIALIZED_EVENT);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE_BY_COMPLETION_DATE_IDX ON EVENT_PUBLICATION_ARCHIVE (COMPLETION_DATE);Legacy schemas
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);CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE
(
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_ARCHIVE_BY_LISTENER_ID_AND_SERIALIZED_EVENT_IDX ON EVENT_PUBLICATION_ARCHIVE (LISTENER_ID, SERIALIZED_EVENT);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE_BY_COMPLETION_DATE_IDX ON EVENT_PUBLICATION_ARCHIVE (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,
STATUS VARCHAR(20),
COMPLETION_ATTEMPTS INT,
LAST_RESUBMISSION_DATE TIMESTAMP(6),
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE
(
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,
STATUS VARCHAR(20),
COMPLETION_ATTEMPTS INT,
LAST_RESUBMISSION_DATE TIMESTAMP(6),
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_ARCHIVE_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);Legacy schemas
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)
);CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE
(
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_ARCHIVE_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,
STATUS VARCHAR(20) NULL,
COMPLETION_ATTEMPTS INT NULL,
LAST_RESUBMISSION_DATE DATETIME2(6) NULL,
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'EVENT_PUBLICATION_ARCHIVE')
CREATE TABLE EVENT_PUBLICATION_ARCHIVE
(
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,
STATUS VARCHAR(20) NULL,
COMPLETION_ATTEMPTS INT NULL,
LAST_RESUBMISSION_DATE DATETIME2(6) NULL,
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_ARCHIVE_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);Legacy schemas
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)
);IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'EVENT_PUBLICATION_ARCHIVE')
CREATE TABLE EVENT_PUBLICATION_ARCHIVE
(
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_ARCHIVE_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,
STATUS VARCHAR(20),
COMPLETION_ATTEMPTS INT,
LAST_RESUBMISSION_DATE TIMESTAMP(6) DEFAULT NULL NULL,
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE
(
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,
STATUS VARCHAR(20),
COMPLETION_ATTEMPTS INT,
LAST_RESUBMISSION_DATE TIMESTAMP(6) DEFAULT NULL NULL,
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_ARCHIVE_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);Legacy schemas
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)
);CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE
(
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_ARCHIVE_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,
status TEXT,
completion_attempts INT,
last_resubmission_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);CREATE TABLE IF NOT EXISTS event_publication_archive
(
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,
status TEXT,
completion_attempts INT,
last_resubmission_date TIMESTAMP WITH TIME ZONE,
PRIMARY KEY (id)
);
CREATE INDEX IF NOT EXISTS event_publication_archive_serialized_event_hash_idx ON event_publication_archive USING hash(serialized_event);
CREATE INDEX IF NOT EXISTS event_publication_archive_by_completion_date_idx ON event_publication_archive (completion_date);Legacy schemas
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);CREATE TABLE IF NOT EXISTS event_publication_archive
(
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_archive_serialized_event_hash_idx ON event_publication_archive USING hash(serialized_event);
CREATE INDEX IF NOT EXISTS event_publication_archive_by_completion_date_idx ON event_publication_archive (completion_date);付録 E: モジュリスからの移行
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に移動しました。