我对以下spring上下文配置文件有问题:
...
<context:property-override location="classpath:query_1.properties" />
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:query_2.properties" />
</bean>
....
问题是找不到文件“query_2.properties”中的属性。我得到的异常(exception)是以下一个:
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException. Could not resolve placeholder...
现在我的问题是: context:property-override 和 PropertyPlaceholderConfigurer 的组合是否可能没有意义?谁能用简单的话解释一下两者之间有什么区别?任何帮助将不胜感激。
谢谢。贺拉斯
最佳答案
属性占位符,通常使用 <context:property-placeholder location=../>
定义解析 bean 定义中的占位符:
例如。
<bean name="myclass" class="MyClass">
<property name="prop1" value="${prop1val}/>
</bean>
如果使用属性占位符指定的位置具有名为 prop1val 的属性:
prop1val=aval
那么在bean中就会被替换myclass
.
使用<context:property-override location="classpath:query_1.properties" />
定义的PrpertyOverrideConfigurer另一方面就像推送机制,属性的形式为 beanname.property
它将将此属性推送到名为 beanname
的 bean 中.
例如。对于上述情况,如果该位置具有以下属性:
myclass.prop1=aval
然后它会注入(inject)prop1
的myclass
bean
您收到的异常只是表明它无法找到 query_2.properties
文件,我怀疑是否是任何其他配置问题。
如果两者都定义了,哪一个生效,我认为最后一个生效。
关于java - 组合上下文:property-override and PropertyPlaceholderConfigurer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12009858/