アプリケーションモジュール構造の検証

ApplicationModules インスタンスで  … .verify() メソッドを呼び出すことで、コードの配置が意図した制約に従っているかどうかを確認できます。

  • Java

  • Kotlin

ApplicationModules.of(Application.class).verify();
ApplicationModules.of(Application::class.java).verify()

検証には次のルールが含まれます。

  • アプリケーションモジュールレベルでは循環はありません。モジュール間の依存関係は有向非巡回グラフを形成する必要があります。

  • API パッケージ経由のみの遠心モジュールアクセス - アプリケーションモジュールの内部パッケージに存在する型へのすべての参照は拒否されます。詳細については、高度なアプリケーションモジュールを参照してください。オープンアプリケーションモジュールの内部への依存関係は許可されます。

  • 明示的に許可されたアプリケーションモジュール依存関係のみ (オプション) - アプリケーションモジュールは、オプションで @ApplicationModule(allowedDependencies = …) を介して許可された依存関係を定義できます。これらが構成されている場合、他のアプリケーションモジュールへの依存関係は拒否されます。詳細については、アプリケーションモジュールの明示的な依存関係および名前付きインターフェースを参照してください。

Spring Modulith はオプションで jMolecules ArchUnit ライブラリと統合され、存在する場合は、ここで説明するドメイン駆動設計 [Amazon] とアーキテクチャ検証ルールが自動的にトリガーされます。

検出された違反の処理

ApplicationModules.verify() は、アーキテクチャ違反が検出された場合、例外をスローします。代わりに ApplicationModules.detectViolations() を呼び出すことで、違反にアクセスし、特定の違反を無視するなど、さらなる処理を行うことが可能です。

ApplicationModules.of(…)
  .detectViolations()
  .filter(violation -> …)
  .throwIfPresent();

検証のカスタマイズ

で説明したように、デフォルトでは、ApplicationModules.verify(…) と  … .detectViolations(…) の両方が、クラスパス構成に応じて追加の検証を自動的に実行します。

これらをカスタマイズしたり、無効にしたり、追加の検証を登録したりするには、verify(…) と detectVolations(…) の両方が VerificationOptions インスタンスを取得します。

var hexagonal = JMoleculesArchitectureRules.ensureHexagonal(VerificationDepth.LENIENT); (1)
var options = VerificationOptions.defaults().withAdditionalVerifications(hexagonal); (2)

ApplicationModules.of(…).verify(options); (3)
1 寛容モードで六角形アーキテクチャの jMolecules アーキテクチャ検証を設定します。
2 デフォルトの検証を、先ほど設定した検証に置き換えて、VerificationOptions インスタンスを作成します。
3 設定したオプションを使用して検証を実行します。