首页 > 解决方案 > 我可以在 Bean 关闭功能时让 Spring 提供带有 null 的 @Autowired 构造函数吗?

问题描述

我正在开发一个应该隐藏在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注释:ConditionalTheToggledDependencyFeatureToggleX

@Component
@IfActive("FeatureToggleX")
class TheToggledDependency implements NewDependency {
}

b = null关闭时如何使 Spring 临时接线FeatureToggleX

是否有一种干净的方法可以将通用解决方案插入到 Spring 的接线过程中,以检测IfActive组件并null在它们的位置提供 s?


标签: springautowiredfeaturetoggle

解决方案


不,至少不在构造函数中。处理这类事情的一种方法是 setter 注入。

所以你会有这样的东西(这里是鸭子打字):

class SomeClass {


  private OldDependency a;
  private NewDependency b;

  @Autowired
  public SomeClass(OldDependency a) {
    this.a = a;
  }

  @Autorired(required=false)
  public void setNewDependency(NewDependency b) {
   this.b = b;
  }

}

我希望这有帮助。


推荐阅读