注入 Play 类
你经常需要从框架本身(如 WSClient 或 Configuration)访问类的实例。你可以在自己的类中注入它们:
class ComplexService @Inject()(
configuration: Configuration,
wsClient: WSClient,
applicationLifecycle: ApplicationLifecycle,
cacheApi: CacheApi,
actorSystem: ActorSystem,
executionContext: ExecutionContext
) {
// Implementation goes here
// you can use all the injected classes :
//
// configuration to read your .conf files
// wsClient to make HTTP requests
// applicationLifecycle to register stuff to do when the app shutdowns
// cacheApi to use a cache system
// actorSystem to use AKKA
// executionContext to work with Futures
}
有些像 ExecutionContext,如果它们被隐式导入,可能会更容易使用。只需将它们添加到构造函数的第二个参数列表中:
class ComplexService @Inject()(
configuration: Configuration,
wsClient: WSClient
)(implicit executionContext: ExecutionContext) {
// Implementation goes here
// you can still use the injected classes
// and executionContext is imported as an implicit argument for the whole class
}