java - 是否可以在运行时指定上下文属性占位符

标签 java spring properties

我有一个使用 spring 的独立 jar。我的 spring xml 中的配置使用了我在使用 maven 编译时替换的占位符。 Spring 配置示例:

<bean id="foo" class="package.Foo">
    <property name="host" value="${db.host}" />
</bean>

我不想使用 maven 替换 ${db.host} 我想在运行时传递一个属性文件,例如

java -jar Application.jar productionDB.properties

这将允许我通过传入生产数据库属性文件或测试数据库属性文件来在运行时切换数据库主机。

是否可以做到这一点,或者是否有更好的方法来实现相同的目标?

最佳答案

您可以将属性文件指定为系统属性,例如:

java -jar Application.jar -DappConfig=/path/to/productionDB.properties

然后您应该能够在应用程序上下文中引用它:

<context:property-placeholder location="file:${appConfig}"/>

<bean id="foo" class="package.Foo">
    <property name="host" value="${db.host}" />
</bean>

关于java - 是否可以在运行时指定上下文属性占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15880081/

相关文章:

java - 使用 Spring Boot 和 application.yml 注入(inject) Map<String, Double>

java - 如何在 Java 中克隆 org.json.JSONObject?

java - Java 中的枚举循环

java - 开发 Facebook 应用程序的最佳客户端/服务器架构?

java - 如何在 Spring 批处理的作业上下文 xml 文件中使用 jobExecutionContext ['key' ]

python - 将 @property 与另一个装饰器结合起来

java - C 中的未知字节写入结构

Java 文本区域中的流水号

java - 无法使用 Spring Boot 提供静态 index.html

java - 如果我使用 -D 设置系统属性,我可以从我的代码中访问它吗?