2012-11-02 20 views
6

विभिन्न उपयोगकर्ताओं के लिए अलग-अलग संपत्ति सेट रखना उपयोगी है।एक्सएमएल कॉन्फ़िगरेशन फ़ाइल में स्प्रिंग एक्सप्रेशन

<?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"> 

    <context:property-placeholder 
     location="classpath:/path/to/package/default.properties, 
     classpath:/path/to/package/#{ systemProperties['user.name'] }.properties"/> 

</beans> 

आवेदन निष्पादित करते समय, वसंत अभिव्यक्ति को पहचान नहीं पाता है। संदर्भ शुरू नहीं होता है और वसंत कहता है: class path resource [path/to/package/#{ systemProperties['user.name'] }.properties] cannot be opened

जब मैं एक स्ट्रिंग के साथ मैन्युअल रूप से अभिव्यक्ति को प्रतिस्थापित करता हूं जिसके परिणामस्वरूप वैध संसाधन होता है तो व्यवहार की अपेक्षा की जाती है। manual states इसे काम करना चाहिए।

वसंत-संदर्भ और वसंत-कोर (3.1.2-रिलीज) क्लासपाथ में हैं।

  • कैसे वसंत पर्यावरण परिवर्तनीय नहीं उठाता है?
  • मैं एक ही कार्यात्मक समस्या को हल करने के वैकल्पिक समाधान के लिए खुला हूं।
+0

क्या होता है? क्या संदर्भ शुरू होता है? क्या ईएल का अनुवाद नहीं किया गया है, या आप एक अप्रत्याशित मूल्य देख रहे हैं? – jalynn2

+0

धन्यवाद jalynn2। मैंने व्यवहार को शामिल करने के लिए प्रश्न संपादित किया। – Hector

उत्तर

4

स्पेल अभिव्यक्तियों की अनुमति नहीं है; आप जो अप्रत्यक्ष रूप से चाहते हैं वह कर सकते हैं, हालांकि ...

<context:property-placeholder properties-ref="props"/> 

<util:properties id="props" location="classpath:#{systemProperties['foo']}"/> 
+0

धन्यवाद गैरी! आपका सुझाव समाधान का कारण बनता है। प्लेसहोल्डर को गुण जोड़ना और स्थानीय ओवरराइड भी डिफ़ॉल्ट -> useroverride कार्यक्षमता को रखता है। – Hector

0

यहां प्रश्न का पूरा उत्तर दिया गया है। डिफ़ॉल्ट गुणों पर उपयोगकर्ता गुणों के ओवरराइड को रखना। स्वीकृत उत्तर का मेरा संपादन अस्वीकार कर दिया गया।

<context:property-placeholder properties-ref="springContextCongifurationProperties" 
           location="classpath:/path/to/package/default.properties" 
           local-override="true"/> 

<util:properties id="springContextCongifurationProperties" 
       location="classpath:/path/to/package/#{ systemProperties['user.name'] }.properties"/> 
संबंधित मुद्दे