2013-01-07 9 views
13

चलें कहते हैं कि मैं एक विन्यास है:वसंत संपत्ति प्लेसहोल्डर कॉन्फ़िगरर में एकाधिक स्थानों के साथ संपत्ति समाधान आदेश क्या है?

<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 "बीन से इंजेक्शन दिया जाएगा? क्या गुण संकल्प का कोई परिभाषित आदेश है?

+0

लें देखो: //forum.springsource.org /showthread.php?36672-PropertyPlaceholderConfigurer-multiple-property-files –

उत्तर

18

जावाडोक PropertiesLoaderSupport.setLocation के लिए राज्यों गुण फ़ाइलों का

सेट स्थान लोड किया जाना है।

क्लासिक गुण फ़ाइलों या एक्सएमएल फाइलों को इंगित कर सकता है जो जेडीके 1.5 के गुणों का एक्सएमएल प्रारूप का पालन करते हैं।

नोट: बाद की फ़ाइलों में परिभाषित गुण ओवरलैपिंग कुंजी के मामले में पूर्व फ़ाइलों को परिभाषित गुणों को ओवरराइड करेंगे। इसलिए, सुनिश्चित करें कि सबसे विशिष्ट फाइलें स्थान की दी गई सूची में अंतिम हैं।

तो my.url में my.url का मान first.properties में my.url के मान को ओवरराइड करेगा।

7

आखिरी जीतता है।

मान लिया जाये कि हम

prop1=val1 

रूप props1.properties और 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> 

संदर्भ बदल अगर एक ही परीक्षण प्रिंट इस लिंक -http पर

val1 
संबंधित मुद्दे