加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – Ostrich如何用于配置?

发布时间:2020-12-16 09:32:14 所属栏目:安全 来源:网络整理
导读:我需要一种配置我的scala应用程序的方法。 Configgy似乎是Scala中的一种方式,但它已经不再适用了 https://github.com/robey/configgy#readme,现在这个功能在Ostrich。 有没有代码示例如何使用鸵鸟只是为了配置?我不收集统计资料。 解决方法 我也想知道正
我需要一种配置我的scala应用程序的方法。 Configgy似乎是Scala中的一种方式,但它已经不再适用了 https://github.com/robey/configgy#readme,现在这个功能在Ostrich。

有没有代码示例如何使用鸵鸟只是为了配置?我不收集统计资料。

解决方法

我也想知道正式的答案,但没有人回答,所以我决定捅。对不起,如果这个答案不是很全面。

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

假设你想配置一个类T的一个实例。基本思路如下:

>获取包含评估为com.twitter.util.Config[T]的Scala源代码的java.io.File
>为了成为一个有效的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"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读