最新の安定バージョンについては、Spring Modulith 1.4.3 を使用してください!

付録

付録 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.events.externalization.enabled

true

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

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

false

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

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.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

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

付録 C: Spring Modulith モジュール

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

spring-modulith-starter-core

compile

  • spring-modulith-api

  • 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-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-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,
  PRIMARY KEY (ID)
)

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)
)

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)
)

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)
)

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