繁体   English   中英

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

[英]How to use different application.conf per environment in Akka-Http?

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

我阅读了Akka的文档 ,但找不到解决方法。

您可能知道任何适当的方式来拥有多个配置文件吗?

这是几种方法。

  1. 在文件本身中添加标签,例如

prod-config:{YOUR_CONFIGURATION_FOR_PROD}

测试配置:{YOUR_CONFIGURATION_TEST_ENV}

等等

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

一种可能是在application.conf中有一个单个变量,该变量将为“ confFile”,基于实际的env

confFile=${?CONF_FILE_NAME}

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

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

此选项与Akka无关,与配置库无关。 Akka使用默认的配置分辨率,除非您为其指定了Config实例。

没有特定的用户代码来手动选择特定的文件,您可以有几种选择。 我认为最有用的是系统属性config.resource ,用于在类路径中选择文件(例如,在应用程序jar中), config.file以使用来自文件系统的文件。

当然,您可能仍然有理由编写自己的代码以选择文件作为其他建议的答案。

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

Akka使用Typesafe配置库

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

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

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

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

  1. development.conf
  2. production.conf

在开始时使用include ,include application.conf并指定将覆盖application.conf的特定于环境的配置。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM