我正在尝试将依赖项注入到播放应用程序中,并在使用对象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"
}