付録

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

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

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.jdbc.schema-initialization.enabled

false

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

spring.modulith.events.jdbc.schema

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

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

インデックスを作成するかどうか。

spring.modulith.events.rabbitmq.enable-json

true

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

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

false

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

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.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: 非推奨モジュール

表 3: 非推奨モジュール表
モジュール 廃止予定日 説明

spring-modulith-events-aws-sns

1.3

io.awspring.cloud:spring-cloud-aws-modulith-events-sns に移行してください。このリンク [GitHub] (英語) を参照してください

spring-modulith-events-aws-sqs

1.3

io.awspring.cloud:spring-cloud-aws-modulith-events-sqs に移行してください。このリンク [GitHub] (英語) を参照してください

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