(播放 2.4)特征中的依赖注入?
(Play 2.4) Dependency injection in a trait?
在 play 2.4 中,是否可以在特征中使用依赖注入?
有例子吗?
谢谢。
我在这里谈论使用 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]
}
}
在 play 2.4 中,是否可以在特征中使用依赖注入?
有例子吗?
谢谢。
我在这里谈论使用 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]
}
}