这里的问题是你正在尝试使用属性占位符语法配置属性占位符:)这有点像鸡和蛋的情况${my.location}-spring
在配置了属性占位符之前无法解析你的占位符。
这并不令人满意,但是你可以通过使用更明确的语法来弥补它:
<bean class="org.springframework.beans.factory.config.PropertyPlaceHolderConfigurer">
<property name="location">
<bean class="java.lang.System" factory-method="getenv">
<constructor-arg value="my.location"/>
</bean>
</property>
</bean>
你可以使用略有不同的方法来执行此操作。这是我们如何配置它。我加载默认属性,然后使用可配置位置中的属性覆盖它们。这对我来说很好。
<bean id="propertyPlaceholderConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYstem_PROPERTIES_MODE_OVERRIDE" />
<property name="locations">
<list>
<value>classpath:site/properties/default/placeholder.properties
</value>
<value>classpath:site/properties/${env.name}/placeholder.properties
</value>
</list>
</property>
</bean>