アプリケーションモジュール構造の検証
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 | 設定したオプションを使用して検証を実行します。 |