此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Modulith 1.4.3! |
验证应用程序模块结构
我们可以通过调用….verify()
我们的方法ApplicationModules
实例:
-
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.LENIENT); (1)
var options = VerificationOptions.defaults().withAdditionalVerifications(hexagonal); (2)
ApplicationModules.of(…).verify(options); (3)
1 | 在宽松模式下设置 Hexagonal Architecture 的 jMolecules 架构验证。 |
2 | 创建一个VerificationOptions 实例将默认验证替换为刚刚设置的验证。 |
3 | 使用刚刚配置的选项执行验证。 |