我正在一个Java项目中工作,其中有一个特定的需求:所有的BigDecimal实例应仅通过一个工具类创建,我们暂且称其为MathUtils。目标是确保MathContext和其他配置的一致应用。
为了在整个代码库中强制执行这个规则,我正在考虑使用ArchUnit。然而,我在制定确保BigDecimal只在MathUtils中被实例化而不是在应用程序的其他部分直接实例化的规则时遇到了挑战。
这是我目前尝试的方法:
@ArchTest
public static final ArchRule bigDecimalShouldOnlyBeInstantiatedInMathUtils = noClasses()
.that().doNotHaveFullyQualifiedName("a.b.c.MathUtils")
.should().callConstructor(BigDecimal.class)
.because("BigDecimal应该只在MathUtils中被实例化");
我正在寻求如何正确设置ArchUnit规则以实现此目的的指导,或者是否有其他方法或工具可以用于在Java中实施此类架构约束。
关键要点:
- 如何编写一个ArchUnit规则来确保BigDecimal实例仅在一个特定类(MathUtils)中创建?
- 是否有其他策略或工具可以用于强制执行此类架构规则?
任何见解或建议都将不胜感激!