PropertyPlaceholderConfigurer + PropertiesFactoryBean仅解析位置属性

我无法使PropertyPlaceholderConfigurer在我当前的配置中工作。考虑下面的代码块在我的applicationContext.xml:PropertyPlaceholderConfigurer + PropertiesFactoryBean仅解析位置属性

<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中的属性来解析它们的占位符?我已经做了大量的研究,包括通过春季代码追踪 - 我可以看到如何以及为什么没有这样做。我希望有一些设置,我只是想念!这是我的第一篇文章,所以对我来说很容易:)

回答:

你有适当的配置的春天和属性文件。这就是为什么你能够从文件中读取数据。 一切都是正确的什么弹簧做太多,让我解释一点....

正如你说下面是你的属性文件,

property1=prop1val 

property2=${property1}

请记住,这是一个漂亮的文本文件与关键值对,它不能采取变量。在这里,如果您打算将property1的值动态复制到property2,则不会发生这种情况。这不是我们应该使用属性文件的方式。

属性文件应该是包含键值对的简单文本文件。因此,请将键保持为原子,以便您可以从应用程序或您的文件内逻辑地构建所需的数据。

回答:

我不确定你为什么使用PropertiesFactoryBean。能否请您尽量只以下(不知道,如果你已经尝试过了,你所面临的任何问题)

<bean id="propertyConfigurer" 

class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

<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>

</bean>

以上是 PropertyPlaceholderConfigurer + PropertiesFactoryBean仅解析位置属性 的全部内容, 来源链接: utcz.com/qa/259439.html

回到顶部