如何在Akka-Http中使用不同的application.conf环境?

时间:2018-04-19 09:52:00

标签: scala configuration akka akka-http

我是Akka的新手,想要为每个环境设置不同的application.conf文件(测试,登台,生产等)。

我从Akka上读到documentation,但我无法找到办法。

您是否知道有多种配置文件的正确方法?

4 个答案:

答案 0 :(得分:0)

以下是几种方法。

  1. 在文件中添加标签,如
  2.   

    prod-config:{YOUR_CONFIGURATION_FOR_PROD}

         

    test-config:{YOUR_CONFIGURATION_TEST_ENV}

         

    等等

    1. 为每个环境创建单独的文件,并在将它们部署到特定环境后重命名一次。从application-prod.confapplication.conf

答案 1 :(得分:0)

在application.conf中有一个可能的变量就是" confFile",基于实际的环境

confFile=${?CONF_FILE_NAME}

然后在你的代码中,你加载像这样的对应文件

val configFile = ConfigFactory.load().getString("confFile")
val appConf = ConfigFactory.load(configFile)

答案 2 :(得分:0)

这个选项与Akka和配置库的关系并不多。 Akka使用默认的配置分辨率,除非你给它一个Config实例。

由于没有特定的用户代码来手动选择特定文件,因此您有几个选项。我认为最有用的是系统属性config.resource来选择类路径上的文件(例如在app jar中),config.file来使用文件系统中的文件。

当然,您可能仍有理由编写自己的代码来选择文件,如其他答案所示。

配置库文档中的更多详细信息:https://github.com/lightbend/config#standard-behavior

答案 3 :(得分:0)

Akka使用Typesafe Config Library

便捷方法ConfigFactory.load()加载以下内容(优先级高的列表):

  1. 系统属性
  2. application.conf(具有该名称的classpath上的所有资源)
  3. application.json(具有该名称的classpath上的所有资源)
  4. application.properties(类路径上具有此名称的所有资源)
  5. reference.conf(具有该名称的classpath上的所有资源)

因此,我们通常在/ resources文件夹中创建一个application.conf文件。

对于不同的环境,我们可以创建特定于环境的文件,例如

  1. development.conf
  2. production.conf

使用includes,在开头包含application.conf并指定特定于环境的配置,这些配置将覆盖application.conf。

要使用特定环境,请强制使用其他配置源(例如,从命令行-Dconfig.resource = environment.conf)

使用以下命令启动您的应用程序:

$ sbt运行-Dconfig.resource = development.conf