组合上下文:property-override和PropertyPlaceholderConfigurer

时间:2012-08-17 16:50:00

标签: java spring

我的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。贺

1 个答案:

答案 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文件,我怀疑是否是任何其他配置问题。

如果定义了哪一个将生效,我认为最后一个将生效。

相关问题