PropertyPlaceholderConfigurerを現在の構成で機能させるのに問題があります。私のapplicationContext.xmlに次のコードブロックがあるとします。
<bean id="myProperties"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list>
<!-- Order matters, last one to create a property wins! -->
<value>classpath:default.properties</value>
<value>file:${MYAPP_PROPERTIES_LOCATION:badurl}/application.properties</value>
<value>file:${user.home}/developer.properties</value>
</list>
</property>
<property name="ignoreResourceNotFound" value="true"/>
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertiesPlaceholderConfigurer">
<property name="properties" ref="myProperties"/>
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
<property name="searchSystemEnvironment" value="true"/>
</bean>
次に、default.propertiesファイルに次のものがあります(これらはテストプロパティです)。
property1=prop1val
property2=${property1}
機能:propertyConfigurerは、環境変数MYAPP_PROPERTIES_LOCATIONとシステム変数user.homeの両方を正しく解決します。ただし、最終的なプロパティオブジェクトはファクトリBeanによって作成され、結果のプロパティは [property1 = prop1val、property2 =${property1}]になります。
この構成では、myProperties Bean内のプロパティを取得して、プレースホルダーを解決するにはどうすればよいですか? 私はSpringコードのトレースを含めるために多くの調査を行いましたが、これが行われていない方法と理由を確認できます。足りない設定があるといいのですが!これは私の最初の投稿なので、気楽にやってください:)