您经常需要从框架本身(例如WSClient或Configuration)访问类的实例。您可以将它们注入自己的课程中:
class ComplexService @Inject()(
configuration: Configuration,
wsClient: WSClient,
applicationLifecycle: ApplicationLifecycle,
cacheApi: CacheApi,
actorSystem: ActorSystem,
executionContext: ExecutionContext
) {
// 实施在这里
// 您可以使用所有注入的类:
//
// 配置以读取您的.conf文件
// wsClient发出HTTP请求
// 应用程序生命周期注册在应用程序关闭时要做的事情
// cacheApi使用缓存系统
// 使用AKKA的actorSystem
// 与期货一起使用的executionContext
}如果将某些内容(例如ExecutionContext)作为隐式导入,则可能更易于使用。只需将它们添加到构造函数的第二个参数列表中:
class ComplexService @Inject()(
configuration: Configuration,
wsClient: WSClient
)(implicit executionContext: ExecutionContext) {
// 实施在这里
// 您仍然可以使用注入的类
// 和executionContext作为整个类的隐式参数导入
}