如何在Play中管理不同环境的配置属性

时间:2011-10-26 11:57:19

标签: playframework

在Play Framework中,我注意到可以分离Dev或Prod模式中使用的配置属性。

最好的使用示例是baseUrl:

# Url-resolving in Jobs
# ~~~~~~
# When rendering templates with reverse-url-resoling (@@{..}) in Jobs (which do not have an inbound Http.Request),
# ie if sending a HtmlMail, Play need to know which url your users use when accessing your app.
# %test.application.baseUrl=http://localhost:9000/

%dev.application.baseUrl=http://127.0.0.1:9000
%prod.application.baseUrl=http://www.example.com

但我无法让它适用于其他财产:

%dev.application.staticUrl=/public
%prod.application.staticUrl=http://static.example.com

调用Play.configuration.getProperty("application.staticUrl"),甚至是Play.configuration.getProperty("%dev.application.staticUrl")(进行测试)都没有:/

我该如何做到这一点?

1 个答案:

答案 0 :(得分:5)

在开发模式下运行时,您不需要在行前加上开发。

我在使用2个实例开发app和prod模式时以开发模式运行我的应用程序。 我的application.conf示例:


application.mode=dev
%inst1.application.mode=prod
%inst2.application.mode=prod
mail.smtp=mock
%inst1.mail.smtp=MAILSERVER1
%inst2.mail.smtp=MAILSERVER1

使用播放运行myapp 运行应用将使用不带前缀的属性。 在prod模式下,我使用播放开始 - %inst1 播放开始 - %inst2 运行2个实例。

这将创建2个使用自己的属性运行的应用程序实例,如果未指定,则创建默认属性。

使用getProperty时,请勿使用前缀即。 Play.configuration.getProperty(“mail.smtp”)将以开发模式返回模拟,或者以prod模式返回MAILSERVER1。

在你的情况下你有两个配置(不要误认为运行模式!),dev和prod。应用程序运行模式由application.mode属性定义。