Scala Play DI问题:无法注入类或对象的字段
我的项目具有类似的结构:Scala Play DI问题:无法注入类或对象的字段,scala,dependency-injection,playframework,guice,Scala,Dependency Injection,Playframework,Guice,我的项目具有类似的结构: Application | |--> /ApplicationA | -> /app | ->Filters.scala | ->AuthenticationComponent.scala | -> /build.sbt | |--> /ApplicationB | -> /app | ->Module.scala | ->VanillaAuthenticationUti
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,但在过滤器的情况下,它是false。同样的情况是,当我尝试注入scala对象时,我也接收到null
有什么想法吗?我不推荐混合场和构造函数注入。将它移动到构造函数参数,它可能会工作