【问题标题】:Multiple .properties files in a Java projectJava 项目中的多个 .properties 文件
【发布时间】:2011-02-01 15:58:15
【问题描述】:

我想找到一种方便的方法来在多个 .properties 文件之间切换以适应不同的部署配置。

我最初的想法是创建一个单独的文件selector.properties,它的单个属性用于确定正确的文件:

properties.file=deploymentConfiguration1.properties

...对于一个部署,或:

properties.file=deploymentConfiguration2.properties

...为下一次部署。

我团队的另一位开发人员有一个 ApplicationProperties 类,其中:

private static final String PROP_FILE="someFileName.properties";

...是执行此操作的方法。但是,我想在重建的情况下切换属性文件!提前感谢您的意见。

编辑:也许我一开始应该更清楚,但这是针对一组打包为 AAR 的 Web 服务。我将把它放到 Web 服务器中,让 Tomcat 和 Axis2 做他们的事情。

所以,我认为命令行参数的某些答案在这种情况下不起作用。

【问题讨论】:

  • 您是否在项目中使用任何框架或工具包来帮助执行此操作(例如 spring)?
  • 我们在项目的 Web 应用程序部分使用 JSF 和 Weld。
  • 在我看来,您找到了解决问题的方法。这个解决方案有什么问题?
  • 哦,如果可能的话,我只是想要一些更光滑的东西=)
  • 只是一个注释,请在发布之前指定您的问题,如果您需要完全更改它(如这个) - 请创建一个新问题!

标签: java deployment configuration properties


【解决方案1】:

有多个属性文件,每个环境一个,例如;

application-dev.properties
application-test.properties
application-prod.properties

使用 env 作为系统属性启动您的应用;

java -Denv=test

从相关文件中加载您的属性;

String props = "application-" + System.getProperty("env") + ".properties";

请注意,我通常不鼓励这样做,而是支持在 build 时间生成文件的具有固定名称的属性文件。

编辑:
如果是web应用,可以在部署描述符(web.xml)中设置env的值

<env-entry>
  <env-entry-name>myEnv</env-entry-name>
  <env-entry-type>java.lang.String</env-entry-type>
  <env-entry-value>test</env-entry-value>
</env-entry>

然后你可以像这样在你的网络应用程序中获取价值;

Context ctx = new InitialContext();
Context envCtx = (Context) ctx.lookup("java:comp/env");
String env = (String)envCtx.lookup("myEnv");
String props = "application-" + env + ".properties";

【讨论】:

  • 我喜欢这个解决方案。也许我应该在这个问题上更清楚,但这是针对一组打包为 AAR 的 Web 服务。我将把它放到 Tomcat 服务器中。如果我不直接运行该项目,是否有类似的方法来执行您的建议?
【解决方案2】:

添加一个指向配置文件的参数!

java Program -config deploymentConfiguration2.properties

【讨论】:

  • 我同意。命令行参数或命令行系统属性是实现此目的的最佳方式。
【解决方案3】:

使用“属性管理器”属性文件的方法听起来不错。 主属性文件可以通过 jvm 参数作为参数传递给 vm 但是这个过程的一个缺点是主属性文件在一段时间内变得不受管理。例如,您最终可能会保留一些不再有意义的旧属性文件引用。

【讨论】:

    猜你喜欢
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多