我的followingspring上下文配置文件有问题:
...
<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 in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException. Could not resolve placeholder...
现在我的问题:上下文:property-override和PropertyPlaceholderConfigurer的组合是否可能没有意义?任何人都可以用简单的话来解释我两者之间的区别是什么?任何帮助将不胜感激。
THX。贺
答案 0 :(得分:3)
通常使用<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
然后它将注入prop1
myclass
bean
您获得的异常只是表明它无法找到query_2.properties
文件,我怀疑是否是任何其他配置问题。
如果定义了哪一个将生效,我认为最后一个将生效。