【发布时间】:2018-05-22 14:33:06
【问题描述】:
我的项目结构类似:
Application
|
|--> /ApplicationA
| -> /app
| ->Filters.scala
| ->AuthenticationComponent.scala
| -> /build.sbt
|
|--> /ApplicationB
| -> /app
| ->Module.scala
| ->VanillaAuthenticationUtil.scala
| -> /build.sbt
|
|-> /conf
|-> /build.sbt
Module.scala的代码如下:
class Module extends AbstractModule {
override def configure(): Unit = {
bind(classOf[AuthenticationUtil])
.annotatedWith(Names.named("authUtil"))
.to(classOf[VanillaAuthenticationUtil]).asEagerSingleton()
}
}
另外,ApplicationA 不知道 ApplicationB 并且 ApplicationB 依赖于 ApplicationA。
Filters.scala和AuthenticationComponent.scala的代码也列出来了:
class Filters @Inject()(corsFilter: CORSFilter) extends HttpFilters {
@Inject
@Named("authUtil")
var authUtil:AuthenticationUtil = _
def filters = Seq(corsFilter, authUtil)
}
class AuthenticationComponent {
@Inject
@Named("authUtil")
var authUtil:AuthenticationUtil = _
def getAuthUtil():AuthenticationFilter ={
println(authUtil == null)
authUtil
}
}
所以,当我从 AuthenticationComponent 调用 getAuthUtil 时,它说 authUtil 等于 null,但在 Filters 的情况下它是错误的。同样的情况是,当我尝试注入 scala 对象时,我也收到了 null。
有什么想法吗?
【问题讨论】:
标签: scala dependency-injection playframework guice