14

構成があるとしましょう:

    <bean id="batchJobProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>first.properties</value>
            <value>second.properties</value>
        </list>
    </property>
</bean>

first.properties にはプロパティ "my.url=first.url" があります second.properties にはプロパティ "my.url=second.url" があります

では、「myUrl」Bean にはどの値が注入されるのでしょうか? プロパティ解決の定義された順序はありますか?

4

2 に答える 2

23

PropertiesLoaderSupport.setLocationのjavadocの状態

ロードするプロパティファイルの場所を設定します。

従来のプロパティファイルまたはJDK1.5のプロパティXML形式に従うXMLファイルを指すことができます。

注:キーが重複している場合、後のファイルで定義されたプロパティは、前のファイルで定義されたプロパティをオーバーライドします。したがって、最も具体的なファイルが、指定された場所のリストの最後のファイルであることを確認してください。

したがって、second.propertiesのmy.urlの値は、first.propertiesのmy.urlの値をオーバーライドします。

于 2013-01-07T08:49:47.107 に答える
8

最後の1つが勝ちます。

props1.properties があると仮定します。

prop1=val1

および props2.properties

prop1=val2

および context.xml

<context:annotation-config />
<bean id="batchJobProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>/props1.properties</value>
            <value>/props2.properties</value>
        </list>
    </property>
</bean>
<bean class="test.Test1" /> 

それから

public class Test1 {
    @Value("${prop1}")
    String prop1;

    public static void main(String[] args) throws Exception {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("/test1.xml");
        System.out.println(ctx.getBean(Test1.class).prop1);
    }

}

版画

val2

そして、コンテキストを次のように変更すると

        <list>
            <value>/props2.properties</value>
            <value>/props1.properties</value>
        </list>

同じテストプリント

val1
于 2013-01-07T09:19:10.277 に答える