我正在开发一个应该隐藏在FeatureToggleX
. 作为其中的一部分,我需要添加一个新的依赖项b
到我的SomeClass
:
class SomeClass {
private OldDependency a;
private NewDependency b;
@Autowired
public SomeClass(OldDependency a, NewDependency b) {
this.a = a;
this.b = b;
}
}
当且仅当激活时,我使用自定义IfActive
注释:Conditional
TheToggledDependency
FeatureToggleX
@Component
@IfActive("FeatureToggleX")
class TheToggledDependency implements NewDependency {
}
b = null
关闭时如何使 Spring 临时接线FeatureToggleX
?
是否有一种干净的方法可以将通用解决方案插入到 Spring 的接线过程中,以检测IfActive
组件并null
在它们的位置提供 s?
正如其他答案中所建议的那样,我考虑
@Autowired(required = false)
过 - 可能与重载SomeClass
的构造函数结合使用 - 允许省略b
,但这有副作用,它也使省略合法化a
,这应该是一个错误。我可以提供 的替代虚拟
IfInactive
变体NewDependency
,但这会使我的项目充满毫无价值的虚拟变量,我需要记住在移除切换开关时移除这些虚拟变量。同样,我可以构建 的两种变体
SomeClass
,一种具有,另一种NewDependency
完全不知道,并根据切换在两者之间进行选择。但是,这对于较大的类是不切实际的,因为它复制了其他不受影响的功能。