【发布时间】:2022-01-03 14:46:03
【问题描述】:
我正在尝试验证以下依赖项:
在这张图中,红色的关系是禁止的,绿色的关系是允许的:
- 适配器包中的任何类都不能继承自端口包中的类;
- 适配器包中的任何类都可以使用(例如,具有字段)端口包中的类;
- 服务包中的任何类都不能使用(例如,有一个字段)端口包中的类;
- 服务包中的任何类都可以继承端口包中的类;
如果可能,我想将这些验证添加到分层架构中。
谢谢。
【问题讨论】:
标签: archunit
我正在尝试验证以下依赖项:
在这张图中,红色的关系是禁止的,绿色的关系是允许的:
如果可能,我想将这些验证添加到分层架构中。
谢谢。
【问题讨论】:
标签: archunit
LayeredArchitecture 考虑层之间的 all dependencies。您不能禁止继承,但允许访问——反之亦然。我建议改为定义单独的特定规则:
@ArchTest
ArchRule adapter_should_not_inherit_from_port = noClasses()
.that().resideInAPackage("….adapter")
.should().beAssignableTo(JavaClass.Predicates.resideInAPackage("….port"));
@ArchTest
ArchRule service_should_not_access_port = noClasses()
.that().resideInAPackage("….service")
.should().accessClassesThat().resideInAPackage("….port");
【讨论】: