java – PropertyPlaceholderConfigurer PropertiesFactoryBean
我无法让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和属性文件配置.这就是为什么你能够从文件中读取数据的原因.春天的一切都是正确的,让我解释一下……
如下所述,是你的财产档案, property1=prop1val property2=${property1} 请记住,它是一个带有键值对的漂亮文本文件,它不能接受变量.在这里,如果您打算将property1的值动态复制到property2,则不会发生这种情况.这不是我们应该使用属性文件的方式. 属性文件应该是具有键值对的简单文本文件.因此,保持密钥是原子的,以便您可以从应用程序或applicationcontext.xml文件中逻辑地构造所需的数据. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |