0

次の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 の組み合わせが意味をなさない可能性はありますか? 誰でも簡単な言葉で説明できますか?両方の違いは何ですか? どんな助けでも大歓迎です。

どうも。ホレス

4

1 に答える 1

3

通常はresolvesを使用して定義されるプロパティプレースホルダー<context:property-placeholder location=../>は、Bean定義のプレースホルダーを解決します。

たとえば。

<bean name="myclass" class="MyClass">
    <property name="prop1" value="${prop1val}/>
</bean>

プロパティプレースホルダーで指定された場所にprop1valという名前のプロパティがある場合:

prop1val=aval

その後、Beanに置き換えられますmyclass

もう一方を使用して定義されたPrpertyOverrideConfigurer<context:property-override location="classpath:query_1.properties" />はプッシュメカニズムのようなもので、プロパティは形式beanname.propertyであり、このプロパティを名前の付いたBeanにプッシュしますbeanname

たとえば。上記の場合、場所のプロパティが次の場合:

myclass.prop1=aval

prop1それからそれはmyclass豆を注入します

発生している例外は、ファイルが見つからないことを示しているだけですquery_2.properties。他の構成の問題であるかどうかは疑わしいです。

両方が定義されている場合、どちらが有効になるか、最後の方が有効になると思います。

于 2012-08-17T17:32:29.913 に答える