在 Play for Scala 中访问单例值

Accessing Singleton values in Play for Scala

我在 Scala 中定义了以下单例

package main

import javax.inject._

@Singleton
class Properties {
  val timeout = 120
}

如何从其他程序访问它?我试过 main.Properties.timeout 但它抛出一个编译错误,提示未找到伴随对象

如果您想以您提到的方式访问它:main.Properties.timeout,则改用伴随对象:

class Properties {
   // ...
}
object Properties {
    val timeout = 120
    // ...
}

使用 @Singleton 注释,您必须将该服务注入某处才能使用它。所以像这样:

import javax.inject._
import main.Properties

class SomeService @Inject() (props:Properties)() {
    println(props.timeout)
}

这是有关 PlayFramework DI 的文档:https://www.playframework.com/documentation/2.5.x/ScalaDependencyInjection - 最新的(不是 2.0),但这是一个很好的起点。