您经常需要从框架本身(例如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作为整个类的隐式参数导入 }