在早期版本中,使用
val value = Play.current.configuration.getString("confKey")
但是玩2.5给出了警告
Play 对象中的当前方法已弃用:这是对应用程序的静态引用,请改用 DI
这意味着 - 伙计们使用Dependency Injection
好的,我写下面的代码:
import javax.inject.Inject
import play.api.Configuration
class SomeClass @Inject() (playconfiguration: Configuration) {
val someConfigValue: String = playconfiguration.getString("someConfKey").get
}
您需要访问配置из объекта。好吧,我们继承类,把配置传给它,这里我有个问题,我不明白从哪里弄来的
object SomeObj extends SomeClass(Configuration.и что дальше?`){
def getSomeConfigValue(): String = someConfigValue
}
application.conf有兴趣阅读somePath/someFile.conf
在底线,问题可以重新表述 - “如何从对象中的 application.conf 或 *.conf 读取键值,绕过有关 DI 的警告,即不使用Play.current.configuration但使用Dependency Injection? ”
object AnyObj {
val value = читаем из конфигурационного файла
}
帮助我理解。
据我所知,这种继承是不可能的。如果您需要
object访问依赖项,我看到两个选项:将依赖项作为函数参数传递。从您需要此功能的班级。
在一个类中创建一个对象(最好作为一个单例来完成)。(此方法不得已)
我设法实现如下,例如,让我们读取数据库连接设置,创建一个文件
services/ConfigReader.scala写进
conf/application.conf因此,我们将能够从任何地方读取配置
ConfigReader,例如,只需在控制器中导入很好用
application.conf,它仍然只需要了解如何阅读*.conf