Rea*_*onk 12 java scala playframework-2.4
可以在开发模式(通过run),生产模式(通过start)或测试模式下启动播放.有没有办法提供不同的配置文件(conf/application.conf)取决于它在哪个模式启动?
Mon*_*ari 17
我通常有一个基本配置(application.conf)和每个环境三个额外的配置.在Play Framework 2.4它可以通过扩展来完成GuiceApplicationLoader,并与您的环境特定的conf合并基地的conf.您可以前进一步,为每个环境提供不同的guice模块.
Scala版本:
class CustomApplicationLoader extends GuiceApplicationLoader {
override protected def builder(context: Context): GuiceApplicationBuilder = {
val builder = initialBuilder.in(context.environment).overrides(overrides(context): _*)
context.environment.mode match {
case Prod =>
// start mode
val prodConf = Configuration(ConfigFactory.load("prod.conf"))
builder.loadConfig(prodConf ++ context.initialConfiguration).bindings(new ProdModule());
case Dev =>
// run mode
val devConf = Configuration(ConfigFactory.load("dev.conf"))
builder.loadConfig(devConf ++ context.initialConfiguration).bindings(new DevModule());
case Test =>
// test mode
val testConf = Configuration(ConfigFactory.load("test.conf"))
builder.loadConfig(testConf ++ context.initialConfiguration).bindings(new TestModule());
}
}
}
Run Code Online (Sandbox Code Playgroud)
Java版本:
public class CustomApplicationLoader extends GuiceApplicationLoader {
@Override
public GuiceApplicationBuilder builder(ApplicationLoader.Context context) {
final Environment environment = context.environment();
GuiceApplicationBuilder builder = initialBuilder.in(environment);
Configuration config = context.initialConfiguration();
if (environment.isTest()) {
config = merge("test.conf", config);
builder = builder.bindings(new TestModule());
} else if (environment.isDev()) {
config = merge("dev.conf", config);
builder = builder.bindings(new DevModule());
} else if (environment.isProd()) {
config = merge("prod.conf", config);
builder = builder.bindings(new DevModule());
} else {
throw new IllegalStateException("No such mode.");
}
return builder.in(environment).loadConfig(config);
}
private Configuration merge(String configName, Configuration currentConfig) {
return new Configuration(currentConfig.getWrappedConfiguration().$plus$plus(new play.api.Configuration(ConfigFactory.load(configName))));
}
}
Run Code Online (Sandbox Code Playgroud)
别忘了包括play.application.loader = "modules.CustomApplicationLoader"你的application.conf.
在较低版本中,Play类似的东西可以通过使用GlobalSettings类和重写来实现onLoadConfig.心灵GlobalSettings在Play 2.4被贬低.
如果你不喜欢,包括test.conf并test mocks从TestModule你的生产版本,你可以filter在使用文件SBT.
| 归档时间: |
|
| 查看次数: |
2292 次 |
| 最近记录: |