- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我无法让 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 代码 - 我可以看到如何和为什么没有这样做。我希望有一些我只是想念的设置!这是我的第一篇文章,所以请放轻松 :)
最佳答案
您已正确配置 spring 和属性文件。这就是为什么您能够从文件中读取数据的原因。 spring 所做的一切都是正确的,让我再解释一下....
正如您在下面所说的是您的属性(property)文件,
property1=prop1val
property2=${property1}
请记住,它是一个带有键值对的漂亮文本文件,不能带变量。在这里,如果您打算动态地将 property1
的值复制到 property2
,则不会发生这种情况。这不是我们应该使用属性文件的方式。
属性文件应该是带有键值对的简单文本文件。因此,保持键的原子性,以便您可以从应用程序或在您的 applicationcontext.xml
文件中逻辑构造所需的数据。
关于java - PropertyPlaceholderConfigurer + PropertiesFactoryBean 只解析位置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10414419/
我只需要读取MyServiceImpl.java类中的menu.properties文件这些值不是特定于环境的。 menu.properties ---------------- menu.optio
我希望公开一个 Properties Spring bean,其值已通过典型的属性扩展机制进行了扩展。我正在使用 Spring 3.1。让我离题。 给定以下属性文件: server.host=myho
我无法让 PropertyPlaceholderConfigurer 在我当前的配置中工作。在我的 applicationContext.xml 中给出以下代码块:
spring 有两种方法可以使用 propertiesfactorybean 或 propertyplaceholderconfigurer 加载属性文件。 您能解释一下它们之间的区别以及何时使用什么
我的项目有一个依赖项,它需要设置一个可由@Value 注释读取的属性对象: @Value("#{myProps['property.1']}") 要在 JavaConfig 中执行此操作,我使用以下内
我是一名优秀的程序员,十分优秀!