2

At the moment, I'm hardcoding several variables like resource names and ports. I would like to move them out of my code.

What are recommended means of implementing a central configuration outside the actual code? Like a file maybe. So that, while the production and development are using same git repository, the configurations would be seperate. I am using Play 2 Framework on Scala.

4

3 回答 3

4

我建议使用Typesafe Config库。它加载和解析可以是 .properties 样式、JSON 或扩展 JSON(称为 HOCON - “Human-Optimized Config Object Notation”)的混合文件,并且是 Play 2 本身(以及 Akka、Spray、以及快速增长的其他库列表)。

于 2013-10-25T13:52:37.650 回答
2

在 Play 的标准application.conf文件中,您可以包含如下文件:

include "file:///..."

在此文件中,您可以覆盖您需要的属性。

此外,(如优秀的 play docs中所述),可以在应用程序启动期间指定 conf 文件,如下所示:

使用 -Dconfig.file 您还可以指定另一个未打包到应用程序工件中的本地配置文件:

$ start -Dconfig.file=/opt/conf/prod.conf

使用 -Dconfig.url 您还可以指定要从任何 URL 加载的配置文件:

$ start -Dconfig.url=http://conf.mycompany.com/conf/prod.conf

请注意,您始终可以使用 include 指令在新的 prod.conf 文件中引用原始配置文件,例如:

include "application.conf"

key.to.override=blah
于 2013-10-25T22:01:02.870 回答
1

配置可能是一种品味,但Typesafe Config是在 scala/play 生态系统中使用的常用库之一(例如,它在 akka 中使用)。

于 2013-10-25T13:53:12.447 回答