我需要从程序运行之前我不知道的位置将一些属性加载到Spring上下文中.
所以我认为,如果我有一个没有位置的PropertyPlaceholderConfigurer,它会my.location从系统属性读入,然后我可以在上下文中使用该位置:property-placeholder
像这样
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
<context:property-placeholder location="${my.location}"/>
Run Code Online (Sandbox Code Playgroud)
但这不起作用也不行 location="classpath:${my.location}"
保罗
Pab*_*jim 15
你可以采用略有不同的方法来做到这一点.以下是我们如何配置它.我加载默认属性,然后使用可配置位置的属性覆盖它们.这对我很有用.
<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>
Run Code Online (Sandbox Code Playgroud)
这里的问题是你正在尝试使用属性占位符语法配置属性占位符:)这有点像鸡蛋和鸡蛋的情况 - ${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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14963 次 |
| 最近记录: |