我已经建立一个应用程序1.7+再应用程序的使用日食插件。该系统常被载入一MyConstants.性文件,该文件是载入单独MyConstants类延伸的...应用程序.i18n.客户。常类。

我想MyConstants载的一些文件,其中包含设置喜欢

  • MyConstants-地方。性能
  • MyConstants-阿尔法。性能
  • MyConstants-测试阶段。性能
  • MyConstants-prod.性能

我已经找到几次提到题之一,因枚举的阶段,但这似乎并不支持由杜松子酒。此外,它只处理dev/prod我肯定需要一个地方/β/prod的解决方案。

有没有办法做到这一使用命令行arg或某一其他实例中定义的运行参数,将工作时装上我们向您?

有帮助吗?

解决方案

上再打开一面,我就能够区分是我开发的环境任何部署的生产环境有这些位的代码。

创建一个接口和两个类文件。

public interface MyConstants {
 public String myConstant(); 
}

public class MyConstantsDev implements MyConstants {
 public String myConstant() { return "xyzzy-dev"; };
}

public class MyConstantsProd implements MyConstants {
 public String myConstant() { return "xyzzy-prod"; };
}

定义一点的题之一,因魔法结合使用的"用户。dir"env var.最后一个目录内的用户。dir路径要么是独特的谷歌的应用程序的发动机应用程序的标识或者你根本项目的发展目录。一旦你知道这一点,可以确定设置的常使用。

public class MyServerModule extends com.google.inject.AbstractModule {

 String appIdentifier = new File( System.getProperty("user.dir") ).getName();
 if ( appIdentifier.equals("trunk") ) {
  // Load MyConstants-dev.properties
  bind( MyConstants.class ).to( MyConstantsDev.class ).in(Singleton.class);
 } else {
  // Load MyConstants-prod.properties
  bind( MyConstants.class ).to( MyConstantsProd.class ).in(Singleton.class);
 }
}

这让我注dev/prod常成类是这样的:

public class MyDomainClass {

 @Inject
 public MyDomainClass( Logger logger, MyConstants const ) { 
  logger.debug( const.myConstant() ); 
 };
}

其他提示

你应该使用特别提出的类型安全的接口工作的这个...

if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production)
{
  //It's production.
}
else
{
  //It's Dev - and (SystemProperty.environment.value() == SystemProperty.Environment.Value.Development)
}

一件事,就是不同之间的发展和部署的环境是的 SERVER_SOFTWARE 环境变量:

if (System.getenv("SERVER_SOFTWARE").startsWith("Dev")) {
  // Load MyConstants-dev.properties
} else {
  // Load MyConstants-prod.properties
}

也许你可以选择模块题之一,因为负荷的基础。

上述答案得到再 SERVER_SOFTWARE 变量;该SERVER_SOFTWARE环境变量是一个CGI默认,因此它是一个网络服务器设定并不是可以通过该系统的环境变量,但是可以从ServletContext.

这里的代码,应该得到你值你的需要(不知道为什么它通和不ServerSoftware...):

if (getServletContext().getServerInfo().startsWith("Dev")) {
  // Load MyConstants-dev.properties
} else {
  // Load MyConstants-prod.properties
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top