最新の安定バージョンについては、Spring Modulith 1.3.4 を使用してください! |
Spring Modulith ランタイムサポート
前の章で説明した機能はすべて、検証とドキュメント作成の目的でテストシナリオでアプリケーションモジュール配置を使用していたか、モジュールを疎結合するのに役立つ一般的なサポート機能でしたが、アプリケーションモジュール構造では直接機能しませんでした。このセクションでは、アプリケーション実行時のモジュール初期化に対する Spring Modulith のサポートについて説明します。
アプリケーションモジュールのランタイムサポートのセットアップ
Spring Modulith のランタイムサポートを有効にするには、プロジェクトに spring-modulith-runtime
JAR を含めるようにしてください。
Spring Modulith のランタイムサポートを使用するということは、アプリケーションに ArchUnit (英語) と J グラフ T (英語) (アプリケーションモジュールをトポロジ的にソートするために必要) ライブラリの両方を含めることを意味することに注意してください。 |
この JAR を追加すると、アプリケーションに次のコンポーネントを登録する Spring Boot 自動構成が実行されます。
ApplicationModules
へのアクセスを許可するApplicationModulesRuntime
。メインアプリケーションクラスを検出するために、以前の Bean をサポートする
SpringBootApplicationRuntime
。アプリケーションコンテキストで定義された
ApplicationModuleInitializer
Bean を呼び出すApplicationStartedEvent
のイベントリスナー。
アプリケーションモジュール初期化子
アプリケーションモジュールを使用する場合、アプリケーションの起動時に個々のモジュールに固有のコードを実行する必要があることがよくあります。これは、コードの実行順序がアプリケーションモジュールの依存構造に従う必要があることを意味します。モジュール B がモジュール A に依存している場合、イニシャライザーが別のイニシャライザーに直接依存していない場合でも、A の初期化コードは B の初期化コードより前に実行する必要があります。
もちろん、開発者は Spring の標準 @Order
アノテーションまたは Ordered
インターフェースを介して実行順序を定義できますが、Spring Modulith はアプリケーションの起動時に実行される Bean 用の ApplicationModuleInitializer
インターフェースを提供します。これらの Bean の実行順序は、アプリケーションモジュールの依存関係構造に自動的に従います。
Java
Kotlin
@Component
class MyInitializer implements ApplicationModuleInitializer {
@Override
public void initialize() {
// Initialization code goes here
}
}
@Component
class MyInitializer : ApplicationModuleInitializer {
override fun initialize() {
// Initialization code goes here
}
}
ApplicationModuleInitializer
Bean は、spring-modulith-runtime
JAR がクラスパス上にある場合にのみ呼び出されることに注意してください ( アプリケーションモジュールのランタイムサポートのセットアップを参照)。これは、アプリケーションモジュール構造に従って初期化子をトポロジ的に並べ替えるために必要な依存関係を取得するためです。