注入所有依赖项后如何进行一些初始化?

问题描述

在所有注入完成之后但在服务启动之前,Play框架中是否可以调用几个单例的某种方法?如何做得更好?

解决方法

我假设您对dependency injection使用Guice? 如果是这种情况,只需创建一个依赖于相关单例的单例对象,并在其初始化程序中调用一个方法。

类似的东西:

  import javax.inject._


  @Singleton
  class ApplicationStart @Inject() (service1: Service1,service2: Service2,...) {
       service1.initializeMethod()
       service2.otherInitMethod()
  }

然后确保该对象已被初始化

import com.google.inject.AbstractModule

class StartModule extends AbstractModule {
  override def configure() = {
    bind(classOf[ApplicationStart]).asEagerSingleton()
  }
}

Guice将确保在初始化StartModule之前先构造service1,service2。