在游戏2.4中,是否可以在特征中使用依赖注入?
有什么例子吗?
感谢。
答案 0 :(得分:6)
我在这里谈论与Guice的运行时DI,因为它是Play使用的默认方法。其他DI方法或框架可能会有所不同。
由于特征不可实例化,因此无法将特性注入特征。特征没有构造函数来定义依赖关系。
在Play中,只要Application特征在范围内,您就可以直接使用注射器。但这并不是生产代码中的良好做法。在测试代码中,这将是一个选项。
class MySpec extends PlaySpecification {
"My test" should {
"Use the injector" in new WithApplication extends Context {
val messages = Messages(Lang("en-US"), messagesApi)
}
}
trait Context extends Scope {
self: WithApplication =>
val messagesApi = app.injector.instanceOf[MessagesApi]
}
}