簡體   English   中英

結合使用context:property-override和PropertyPlaceholderConfigurer

[英]Combinating context:property-override and PropertyPlaceholderConfigurer

我的以下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 in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException. Could not resolve placeholder...

現在我的問題是:context:property-override和PropertyPlaceholderConfigurer的組合可能沒有任何意義嗎? 誰能用簡單的詞解釋我兩者之間的區別? 任何幫助,將不勝感激。

謝謝。 賀拉斯

通常使用<context:property-placeholder location=../>定義的<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" />類似於推送機制,該屬性的形式為beanname.property ,它將將該屬性推送到名稱為beanname的bean中。

例如。 對於上述情況,如果該位置具有以下屬性:

myclass.prop1=aval

那么它將注入myclass bean的prop1

您得到的異常只是表明它無法找到query_2.properties文件,我懷疑這是否是其他任何配置問題。

如果兩者都定義,那么哪一個將生效,我認為最后一個將生效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM