【发布时间】:2012-03-15 05:25:20
【问题描述】:
我有一个 spring 配置文件,其中包含以下元素:
<context:property-placeholder location="classpath:default.properties"/>
<bean id="theVar" class="java.lang.String">
<constructor-arg value="${varName}"/>
</bean>
“varName”现在从属性文件移动到系统属性。它是在我开始 Maven 构建时添加的:
mvn clean install -DvarName=data
我还想在不指定 varName 的情况下运行我的构建:
mvn clean install
有什么方法可以在我的 spring 配置中默认 varName 吗?虽然这不起作用,但我正在寻找的概念示例是:
<bean id="theVar" class="java.lang.String">
<constructor-arg value="${varName}" default="theDefaultValue"/>
</bean>
【问题讨论】:
-
它需要是系统属性吗?可以在另一个文件中指定吗?
-
它需要在构建时是动态的。我对如何提出建议持开放态度。我需要在调用构建时为 varName 指定不同的值,并且我还需要在不指定 varName 的情况下调用构建。
-
指定多个属性文件有帮助吗?
location元素支持以逗号(,) 分隔的多个文件。您可以指定另一个包含“系统默认值”的文件,如果classpath:default.properties无法解析它,那么它将尝试由下一个属性文件解析。 -
我在其他配置中这样做。这种情况下的问题是,它将处理变化的责任转移到了另一个系统,然后该系统必须管理文件。然后我必须找到一种在任何构建之前更新文件的方法。在我的本地开发机器上很容易做到,但在 CI 构建服务器上更难。使用系统属性在 CI 构建机器上处理这种变化很容易。
-
看起来“systemPropertiesMode”可能有效。看着它。
标签: spring maven constructor properties