scala - Scala 环境中的特定配置

标签 scala configuration environment-variables config development-environment

在 Scala 中设置项目的好方法是什么,它根据环境使用不同的配置。

我需要专门为 设置不同的数据库发展 , 测试 生产环境(类似于在 Rails 中所做的)

最佳答案

我正在使用的另一个策略包括使用 includes .
我通常将我的 DEV 设置存储在 defaultapplication.conf文件然后我为其他环境创建一个新的 conf 文件并包含默认文件。

假设我的 DEV conf application.conf看起来像这样:

myapp {
    server-address = "localhost"
    server-port = 9000

    some-other-setting = "cool !"
}

然后对于 PROD,我可以有另一个名为 prod.conf 的文件。 :
include "application"

# override default (DEV) settings
myapp {
    server-address = ${PROD_SERVER_HOSTNAME}
    server-port = ${PROD_SERVER_PORT}
}

请注意,我仅覆盖在 PROD 环境中更改的设置(因此 some-other-setting 与 DEV 中的相同)。

配置引导代码不测试任何东西
...
val conf = ConfigFactory.load()
...

要从 DEV 切换到 PROD conf,只需传递一个带有要加载的配置文件名称的系统属性:
java -Dconfig.resource=prod.conf ...

在 DEV 中,不需要通过它,因为 application.conf将由 default 加载.

所以这里我们使用 Typesafe Config的默认加载机制来实现这一点。

我创建了一个简单的 project来演示这项技术。随意克隆和实验。

关于scala - Scala 环境中的特定配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21607745/

相关文章:

scala - 需要澄清混淆 Http4s 消息类型 `Response[F]`/ `Request[F]`

java - ReplicaFetcher 崩溃 - 第一个偏移量 XXXXXXX 小于下一个偏移量 YYYYYYYY

scala - lift-json XPath\\operator 根据 num 匹配有不同的返回类型

ubuntu - Hadoop Hue 无法访问文件系统根目录

c# - 如何扩展 .Net 中的内置配置提供程序以添加自定义存储?

scala - SBT 环境变量从何而来?

python - 在没有操作系统模块的Python中设置环境变量

scala - spark read 在 Scala UDF 函数中不起作用

ruby-on-rails-3 - 加载 YAML 应用程序配置文件的最佳位置在哪里?

macos - 如何将环境变量传递给由 Intellij IDEA 管理的 gradle 构建文件