验证应用程序模块结构

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

  • Java

  • Kotlin

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

验证包括以下规则

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

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

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

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

处理检测到的违规

如果检测到任何架构违规,ApplicationModules.verify() 将抛出异常。您可以通过调用 ApplicationModules.detectViolations() 来访问这些违规以便进一步处理,例如忽略某些违规。

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

自定义验证

上文所述,默认情况下,ApplicationModules.verify(…)….detectViolations(…) 都会根据类路径配置自动执行额外的验证。

要自定义、禁用或注册额外的验证,verify(…)detectVolations(…) 都接受一个 VerificationOptions 实例。

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

ApplicationModules.of(…).verify(options); (3)
1 在严格模式下为六边形架构设置 jMolecules 架构验证。
2 创建一个 VerificationOptions 实例,用刚刚设置的验证替换默认验证。
3 使用刚刚配置的选项执行验证。
© . This site is unofficial and not affiliated with VMware.