不能对Named注释使用常量val

时间:2017-04-07 21:28:36

标签: scala dependency-injection playframework guice

我正在尝试将依赖项注入到播放应用程序中,并在使用对象val引用时继续出错。每个搜索都说要将val移动到对象并标记最终,但这不起作用。我甚至尝试使用带有静态最终字符串的java接口,但是遇到了同样的问题。

    class HomeController @Inject()() extends Controller {

      @Inject
      @Named(HomeController.Archive)
      var archiver: ActorRef = _

      @Inject
      @Named("aShard")
      var shards: ActorRef = _

      def sendToArchiver(msg: String) = Action {
        archiver ! msg
        Ok("thanks")
      }

      def sendToShards(msg: String) = Action {
        shards ! msg
        Ok("thanks")
      }
    }

    object HomeController {
      final val Archive: String = "archive"
    }

分片值注入很好,但归档器不会。

   [error] /Users/vasmith/Downloads/play-scala/app/controllers/HomeController.scala:17: annotation argument needs to be a constant; found: HomeController.Archive
   [error]   @Named(HomeController.Archive)
   [error] 

参考游戏框架 - 2.5.13,scalaVersion:=“2.11.8”sbt.version = 0.13.13

play framwork使用guice 4.0来实现注射。

分辨率: 谢谢som-snytt,删除了类型注释。从来没有想过会有什么关系。

    object HomeController {
      final val Archive = "archive"
    }

0 个答案:

没有答案