更新
后来我们升级到了Spring 3.0.X,我们能够利用spring表达式语言。我们的方法从三个bean简化为以下代码段:
<bean id="propertyConfigurer" > <property name="locations"> <list> <value>classpath:defaults.properties</value> <value>file:/a/defined/location/project.properties</value> <value>file:${AN_ENV_CONFIGURED_DIR}/project.properties</value> </list> </property> <property name="ignoreResourceNotFound" value="true" /> <property name="searchSystemEnvironment" value="true" /> <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" /></bean>这使我们可以拥有一个静态已知的开发位置(第一个默认设置),或者具有通过env变量配置的部署位置。配置器按顺序处理这些操作(即,部署的优先级高于默认值)。
旧
我最终采用了非编程方法。我使用了MethodInvoker来检索环境值。然后,我能够将其传递到FileSystemResource中。
<bean id="configPath" > <property name="targetClass" value="java.lang.String" /> <property name="staticMethod" value="java.lang.System.getenv" /> <property name="arguments"> <list> <value>NAME_OF_VARIABLE</value> </list> </property></bean>



