ton*_*ian 16 configuration scala ostrich
我需要一种方法来配置我的scala应用程序.Configgy似乎是Scala的方式,但它已被弃用https://github.com/robey/configgy#readme,现在这个功能在Ostrich中.
是否有关于如何仅将Ostrich用于配置的代码示例?我对收集统计数据不感兴趣.
Mik*_*ike 14
我也想知道官方的答案,但没有人回答,所以我决定四处寻找.对不起,如果这个答案不是很全面.
我找到的最好的例子是com.twitter.ostrich.admin.RuntimeEnvironment,特别是如果你主要看的话loadConfig.
假设您要配置类的实例T.基本思路如下:
java.io.File包含评估为a的Scala源代码的com.twitter.util.Config[T].Config[T]你需要有一个def apply(): T方法.要将实现细节保留在配置文件之外,您需要在项目中定义一个扩展的类Config[T].您还可以使用此类来定义默认/必填字段.com.twitter.util.Eval实例,并调用apply(file)以获取Config[T]实例.config.validate()为格式错误的配置文件抛出正确的异常.config.apply()以获取完全配置的实例T.这是一个简单的例子,我配置一个新的WidgetService:
class WidgetService(val port: Int)
class WidgetConfig extends com.twitter.util.Config[WidgetService] {
var port = required[Int]
def apply(): WidgetService = {
new WidgetService(port)
}
}
object MyApp extends App {
val configFile = new java.io.File("mywidget_config.scala")
val eval = new com.twitter.util.Eval
val config = eval[com.twitter.util.Config[WidgetService]](configFile)
config.validate()
val widgetService = config()
println(widgetService.port)
}
Run Code Online (Sandbox Code Playgroud)
这是mywidget_config.scala:
new WidgetConfig {
port = 8000
}
Run Code Online (Sandbox Code Playgroud)
注意:如果将其放入包装中,则可能需要进行修改.为简洁起见,我在默认包中做了所有事情.
为了使依赖项工作,我将其添加到我的SBT配置:
libraryDependencies += "com.twitter" % "util" % "1.10.1"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2350 次 |
| 最近记录: |