付録

付録 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 構成プロパティ

プロパティ デフォルト値 説明

spring.modulith.default-async-termination

true

非同期処理の終了のデフォルトを構成するかどうか、つまりタスクの完了を 2 秒間待機するかどうか。詳細については、TaskExecutionProperties を参照してください。

spring.modulith.detection-strategy

なし

アプリケーションモジュールを検出するために適用される戦略。ApplicationModuleDetectionStrategy または direct-subpackages (何も構成されていない場合の最終的なフォールバックでもあります) のカスタム実装のクラス名、または @ApplicationModule または jMolecules' @Module で明示的にアノテーションが付けられたパッケージのみを選択するための explicitly-annotated のいずれかになります。詳細については、アプリケーションモジュール検出をカスタマイズするを参照してください。

spring.modulith.events.completion-mode

update

イベント公開を完了としてマークする方法。次の値がサポートされています。

  • update (default) — イベント公開エントリの完了日を設定します。

  • delete — イベント公開エントリを削除します。完了したイベント公開は CompletedEventPublications 経由では利用できません。

  • archive — プライマリデータベース抽象化 (テーブル、コレクション、ノード) からイベント公開エントリを削除し、アーカイブ (同じスキーマのテーブル、コレクション、ノード) にイベント公開エントリを作成します。詳細については、イベント公開完了を参照してください。

spring.modulith.events.externalization.enabled

true

イベントの外部化を有効にするかどうか。

spring.modulith.events.externalization.serialize-externalization

false

イベントの外部化をブローカーに直列化するかどうか。

spring.modulith.events.jdbc.schema-initialization.enabled

false

JDBC イベント発行スキーマを初期化するかどうか。

spring.modulith.events.jdbc.schema

イベント発行テーブルのスキーマ名。指定しない場合、テーブルはスキーマ修飾されません。

spring.modulith.events.jdbc.use-legacy-structure

false

従来のイベント公開データベース構造を使用するかどうか。

spring.modulith.events.kafka.enable-json

true

KafkaTemplate の JSON サポートを有効にするかどうか。

spring.modulith.events.mongodb.transaction-management.enabled

true

MongoDB のトランザクションを自動的に有効にするかどうか。データベースをレプリカセットで実行する必要があります。

spring.modulith.events.neo4j.event-index.enabled

false

Neo4j イベント発行イベントハッシュプロパティにインデックスを作成するかどうか。

spring.modulith.events.rabbitmq.enable-json

true

RabbitTemplate の JSON サポートを有効にするかどうか。

spring.modulith.events.republish-outstanding-events-on-restart

false

アプリケーションの再起動時に未処理のイベント公開を再公開するかどうか。他のインスタンスがまだイベントを処理している可能性があるため、通常、マルチインスタンスデプロイでは推奨されません。

spring.modulith.events.staleness.check-interval

Duration.ofMinutes(1)

古いイベントの公開を確認する間隔。

spring.modulith.events.staleness.processing

Duration.ZERO

この期間を過ぎると、処理中の状態のイベント公開は古いものと見なされます。

spring.modulith.events.staleness.published

Duration.ZERO

この期間を過ぎると、公開状態にあるイベント公開は古いものと見なされます。

spring.modulith.events.staleness.resubmitted

Duration.ZERO

この期間が過ぎると、再送信された状態のイベント公開は古いものと見なされます。

spring.modulith.moments.enableTimeMachine

false

TimeMachine を有効にするかどうか。

spring.modulith.moments.granularity

HOURS

発行するイベントの粒度。(HOURSDAYS)

spring.modulith.moments.locale

Locale.getDefault()

週の境界を決定するときに使用する Locale

spring.modulith.moments.zoneId

ZoneOffset.UTC

公開されるイベントの日付のタイムゾーン。

spring.modulith.republish-outstanding-events-on-restart

false

1.3 以降は非推奨です。spring.modulith.events.republish-outstanding-events-on-restart を推奨します。

spring.modulith.runtime.flyway-enabled

false

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.

spring.modulith.runtime.verification-enabled

false

Whether to verify the application module arrangement during application startup. Requires the spring-modulith-runtime artifact on the classpath. For more information, see the section on Spring Modulith’s runtime support for details.

spring.modulith.test.file-modification-detector

なし

これは、定義済み値 uncommitted-changesreference-commitdefault のいずれか、プロジェクトのどのファイルが変更されたかをインスペクションするために使用される FileModificationDetector の完全修飾クラス名のいずれかになります。名前が示すように、uncommitted-changes は、まだコミットされていない変更されたファイルのみを考慮します。reference-commit は、spring.modulith.test.reference-commit を介して提供された特定の Git コミット以降に変更されたすべてのファイルを考慮します。これは、そのプロパティが最後の成功したビルドのコミットハッシュを指す可能性がある CI 環境で特に役立ちます。default は、コミットされていないすべての変更と、現在の ブランチの追跡 ブランチにプッシュされていない変更を検出します。これは、主にローカル開発に役立ちます。

spring.modulith.test.reference-commit

なし

変更されたファイルのセットを計算するコミットハッシュ。通常、CI 環境では、最後の正常なビルド以降のすべての変更を考慮するために伝播されます。

付録 C: Spring Modulith モジュール

表 1: Spring Modulith スターター POM
スターター 一般的な範囲 インクルード

spring-modulith-starter-core

compile

  • spring-modulith-api

  • spring-modulith-apt

  • spring-modulith-moments

  • spring-modulith-core (ランタイム)

  • spring-modulith-runtime (ランタイム)

spring-modulith-starter-insight

runtime

  • spring-modulith-actuator (ランタイム)

  • spring-modulith-observability (ランタイム)

  • spring-boot-starter-actuator (ランタイム)

spring-modulith-starter-jdbc

compile

  • spring-modulith-starter-core

  • spring-modulith-events-api

  • spring-modulith-events-core (ランタイム)

  • spring-modulith-events-jdbc (ランタイム)

  • spring-modulith-events-jackson (ランタイム)

spring-modulith-starter-jpa

compile

  • spring-modulith-starter-core

  • spring-modulith-events-api

  • spring-modulith-events-core (ランタイム)

  • spring-modulith-events-jpa (ランタイム)

  • spring-modulith-events-jackson (ランタイム)

spring-modulith-starter-mongodb

compile

  • spring-modulith-starter-core

  • spring-modulith-events-api

  • spring-modulith-events-core (ランタイム)

  • spring-modulith-events-mongodb (ランタイム)

  • spring-modulith-events-jackson (ランタイム)

spring-modulith-starter-neo4j

compile

  • spring-modulith-starter-core

  • spring-modulith-events-api

  • spring-modulith-events-core (ランタイム)

  • spring-modulith-events-neo4j (ランタイム)

  • spring-modulith-events-jackson (ランタイム)

spring-modulith-starter-test

test

  • spring-modulith-docs

  • spring-modulith-test

表 2: 個別の Spring Modulith JAR
モジュール 一般的な範囲 説明

spring-modulith-actuator

runtime

アクチュエーターを介してアプリケーションモジュール構造を公開する Spring Boot アクチュエーター。

spring-modulith-api

compile

Spring Modulith のデフォルトの動作をカスタマイズするために本番コード内で使用される抽象化。

spring-modulith-apt

compile

アプリケーションモジュールキャンバスに含めるために Javadoc を抽出するアノテーションプロセッサー。

spring-modulith-core

runtime

コアアプリケーションモジュールモデルと API。

spring-modulith-docs

test

Documenter API は、モジュールモデルから Asciidoctor および PlantUML ドキュメントを作成します。

spring-modulith-events-amqp

runtime

AMQP のイベント外部化サポート。

spring-modulith-events-api

runtime

Spring Modulith のイベント機能をカスタマイズするための API。

spring-modulith-events-core

runtime

イベント発行レジストリのコア実装と統合抽象化 EventPublicationRegistry および EventPublicationSerializer

spring-modulith-events-jackson

runtime

Jackson ベースの EventPublicationSerializer 実装。

spring-modulith-events-jdbc

runtime

EventPublicationRegistry の JDBC ベースの実装。

spring-modulith-events-jms

runtime

JMS のイベント外部化のサポート。

spring-modulith-events-jpa

runtime

EventPublicationRegistry の JPA ベースの実装。

spring-modulith-events-kafka

runtime

Kafka のイベント外部化のサポート。

spring-modulith-events-messaging

runtime

Spring メッセージング MessageChannel へのイベント外部化のサポート。

spring-modulith-events-mongodb

runtime

MongoDB ベースの EventPublicationRegistry 実装。

spring-modulith-events-neo4j

runtime

EventPublicationRegistry の Neo4j ベースの実装。

spring-modulith-junit

test

アプリケーションモジュール構造に基づいたテスト実行の最適化。詳細については、こちらを参照してください。

spring-modulith-moments

compile

Passage of Time イベントの実装については、こちらで説明されています。

spring-modulith-observability

runtime

可観測性インフラストラクチャについては、こちらで説明します。

spring-modulith-runtime

runtime

実行時に ApplicationModules インスタンスをブートストラップするためのサポート。通常は spring-modulith-actuator および spring-modulith-observability に直接依存せず、推移的に使用されます。

spring-modulith-test

test

統合テストのサポート。詳細については、こちらを参照してください。

付録 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 に移動しました。