代码之家  ›  专栏  ›  技术社区  ›  tcafrin22

Scala Play DI问题:无法注入类或对象的字段

  •  0
  • tcafrin22  · 技术社区  · 8 年前

    Application
    |
    |--> /ApplicationA
    |   -> /app
    |     ->Filters.scala
    |     ->AuthenticationComponent.scala
    |   -> /build.sbt
    | 
    |--> /ApplicationB
    |   -> /app
    |     ->Module.scala
    |     ->VanillaAuthenticationUtil.scala
    |   -> /build.sbt
    |
    |-> /conf
    |-> /build.sbt
    

    代码 单元斯卡拉

    class Module extends AbstractModule  {
      override def configure(): Unit = {
        bind(classOf[AuthenticationUtil])
          .annotatedWith(Names.named("authUtil"))
          .to(classOf[VanillaAuthenticationUtil]).asEagerSingleton()
      }
    }
    

    应用程序A 应用程序B 和 取决于 应用程序A .

    过滤器。斯卡拉 AuthenticationComponent。斯卡拉 还列出了:

    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
      }
    }
    

    所以,当我打电话的时候 从…起 它表示authUtil等于null,但在

    1 回复  |  直到 8 年前
        1
  •  0
  •   Igmar Palsenberg    8 年前

    我不建议混合场和构造函数注入。将其移动到构造函数参数,它可能会工作。

    推荐文章