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

问题描述

在所有注入完成之后但在服务启动之前,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。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...