验证应用程序模块结构

我们可以通过在 ….verify() 方法上调用 ApplicationModules 实例来验证我们的代码排列是否符合预期约束。

  • Java

  • Kotlin

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

验证包括以下规则

  • 应用程序模块级别上没有循环 - 模块之间的依赖关系必须形成有向无环图。

  • 仅通过 API 包进行传出模块访问 - 所有对位于应用程序模块内部包中的类型的引用都会被拒绝。有关详细信息,请参阅 高级应用程序模块。允许依赖于 开放应用程序模块 的内部。

  • 仅允许显式应用程序模块依赖关系(可选) - 应用程序模块可以选择通过 @ApplicationModule(allowedDependencies = …) 定义允许的依赖关系。如果配置了这些依赖关系,则会拒绝对其他应用程序模块的依赖关系。有关详细信息,请参阅 显式应用程序模块依赖关系命名接口

Spring Modulith 可选地与 jMolecules ArchUnit 库集成,如果存在,则会自动触发其 此处 描述的领域驱动设计验证规则。