2012-03-08 9 views
16

मैं एक XML कॉन्फ़िगरेशन फ़ाइल का उपयोग कर रहा हूं जो कि मेरे जावा एप्लिकेशन में ApplicationContext का उपयोग कर लोड किया गया है।मैं स्प्रिंग कॉन्फ़िगरेशन फ़ाइल में वैकल्पिक गुण फ़ाइल का उपयोग कैसे करूं?

XML कॉन्फ़िगरेशन फ़ाइल PropertyPlaceholderConfigurer का उपयोग करके कई प्रॉपर्टी फ़ाइलों से पढ़कर अपनी गुणों को हल करती है।

मैं प्रत्येक संपत्ति फ़ाइल को वैकल्पिक बनाना चाहता हूं। मैंने सोचा था कि यह सही पर ignoreUnresolsvablePlaceholders की स्थापना द्वारा किया जाता है, लेकिन मैं निम्नलिखित अपवाद हो रही है जब मैं अनुप्रयोग चलाने (db-default.properties मौजूद है, लेकिन db.properties नहीं करता है):

Exception in thread "main" org.springframework.beans.factory.BeanInitializationException: Could not load properties; nested exception is java.io.FileNotFoundException: class path resource [db.properties] cannot be opened because it does not exist 

यह क्या है मेरी एक्सएमएल कॉन्फ़िगरेशन इस तरह दिखता है:

<?xml version="1.0" encoding="UTF-8"?> 

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:context="http://www.springframework.org/schema/context" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

    <bean id="placeholder-configurer-1" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="order" value="1"/> 
     <property name="ignoreUnresolvablePlaceholders" value="true"/> 
    </bean> 

    <bean id="placeholder-configurer-2" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="order" value="2"/> 
     <property name="ignoreUnresolvablePlaceholders" value="true"/> 
     <property name="location" value="classpath:/db-default.properties"/> 
    </bean> 

    <bean id="placeholder-configurer-3" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="order" value="3"/> 
     <property name="ignoreUnresolvablePlaceholders" value="true"/> 
     <property name="locations"> 
      <list> 
       <value>classpath:/db.properties</value> 
      </list> 
     </property> 
    </bean> 

    <bean id="MyDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
     <property name="driverClassName" value="${jdbc.driver}"/> 
     <property name="url" value="${jdbc.url}"/> 
     <property name="username" value="${jdbc.username}"/> 
     <property name="password" value="${jdbc.password}"/> 
    </bean> 

</beans> 

db.properties को वैकल्पिक संपत्ति फ़ाइल बनाने के लिए मुझे क्या करने की आवश्यकता है?

उत्तर

17
<property name="ignoreResourceNotFound" value="true"/> 
+0

धन्यवाद। वह चाल है। –

+0

वास्तव में, मैंने जो लिखा है उसे देखते हुए, मुझे एहसास हुआ कि हम दोनों पुरानी एक्सएमएल शैली का उपयोग कर रहे हैं। क्या आप 'p: ignoreResourceNotFound = "true" 'वाक्यविन्यास से अवगत हैं? यदि नहीं, तो http://blog.springsource.org/2006/11/25/xml-syntax-sugar-in-spring-20/ देखें –

4

यह भी काम करना चाहिए:

<context:property-placeholder ignore-resource-not-found="true" location="classpath:your.properties" ... /> 
संबंधित मुद्दे