我的项目结构相似:
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,但是在过滤器的情况下,它& #39;是假的。同样的情况是,当我尝试注入scala对象时,我也会收到空。
有什么想法吗?
答案 0 :(得分:0)
我不推荐混合场和构造注入。将它移动到构造函数参数,它可能会工作。