springbean依赖于非spring类的初始化

tvz2xvvm  于 2021-07-23  发布在  Java
关注(0)|答案(1)|浏览(339)

假设我有一个名为 SomeClassConfig 其中我想定义一个依赖注入,如下所示;

@Configuration
public class SomeClass {

    @Bean
    SomeOtherClass someOtherClass() {
        FactoryClass factory = UtilFactoryClass.getDefaultFactory();
        return factory.create();
    }
}

在这里 UtilFactoryClass 表示允许我创建工厂类的库,而工厂类又允许我创建我感兴趣的对象的示例。我的问题是,上面提到的默认工厂在一段时间后被初始化,所以我希望bean在示例化默认工厂之后被示例化/注入 FactoryClass 示例。这可能吗? UtilFactoryClass 对spring引导框架一无所知,我尝试应用@dependson注解,但意识到它只允许我依赖其他bean。我尝试应用的具体“getdefaultfactory”方法如下:link。它与一个名为key斗篷的库相关联。我的问题是,在应用程序生命周期的某个点之前,从这个方法获得的工厂是空的。

qxgroojn

qxgroojn1#

你的意思是:

@Configuration
public class SomeClass {

  @Bean
  SomeOtherClass someOtherClass() { //argument injection also possible
    return factory().create();
  }

  @Bean
  FactoryClass factory() {
    //check/wait for condition e.g.:
    while (!UtilityFactory.isInitialized()) { 
      try {
        Thread.sleep(1000); 
        // better: TimeUnit.XXX.sleep(), and even better use an (spring managed) executor
      } catch(InterruptedException ex) {
        Thread.currentThread().interrupt();
      }
    }
    return UtilFactoryClass.getDefaultFactory();
  }
}

“让Spring来管理工厂”!?;)
有关检查/等待部分,请参阅:https://www.baeldung.com/java-delay-code-execution

相关问题