gpt4 book ai didi

scala - 鸵鸟如何用于配置?

转载 作者:行者123 更新时间:2023-12-03 14:56:55 25 4
gpt4 key购买 nike

我需要一种方法来配置我的 scala 应用程序。 Configgy 似乎是 Scala 的最佳选择,但它已被弃用 https://github.com/robey/configgy#readme现在这个功能在 Ostrich 中。

是否有关于如何仅使用 Ostrich 进行配置的代码示例?我对收集统计数据不感兴趣。

最佳答案

我也想知道官方的答案,但是没有人回答,所以我决定四处寻找。对不起,如果这个答案不是很全面。

我发现的最好的例子是 com.twitter.ostrich.admin.RuntimeEnvironment , 特别是如果你主要看 loadConfig .

假设您要配置类 T 的实例.基本思路如下:

  • 获取 java.io.File 包含计算结果为 com.twitter.util.Config[T] 的 Scala 源代码.
  • 为了成为有效的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)
    }

    这里是 mywidget_config.scala :
    new WidgetConfig {
    port = 8000
    }

    注意:如果你把它放在一个包中,你可能需要进行修改。为简洁起见,我在默认包中做了所有事情。

    为了使依赖项工作,我将其添加到我的 SBT 配置中:
    libraryDependencies += "com.twitter" % "util" % "1.10.1"

    关于scala - 鸵鸟如何用于配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6504849/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com