2011-06-08 3 views
12

स्प्रिंग के applicationcontext.xml फ़ाइल में # {systemProperties ['environment']} का उपयोग करते हुए पर्यावरण के साथ जुड़े मूल्य को वापस कर देता है?सिस्टम वैरिएबल प्राप्त करने के लिए कोई वाक्यविन्यास है: # {systemProperties ['environment_variable_name']}?

या वसंत applicationcontext.xml फ़ाइल में सिस्टम परिवर्तनीय मान को ge करने का कोई तरीका है।

+0

क्या आप सिस्टम गुणों या पर्यावरण चर के बारे में बात कर रहे हैं? वे दो अलग-अलग चीजें हैं, आपको पता है ... –

उत्तर

27

जब मैं सही याद है, फिर वहाँ है अंतर के बीच एक:

आप अलग अलग तरीकों से प्रणाली गुण का उपयोग कर सकते हैं:

  • #{systemProperties['databaseName']}
  • #{systemProperties.databaseName}
  • ${databaseName} // $ के बजाय # !!

#{systemProperties['databaseName']} के साथ आप सिस्टम-प्रणाली-गुण की पहुंच है।

#{systemProperties.databaseName} के साथ आपके पास कमांड लाइन (-DdatabaseName="testDB") से उदाहरण के लिए पढ़ी गई सिस्टम गुणों तक पहुंच है।

${databaseName} साथ

आप गुणों से गुण का उपयोग लोड और PropertyPlaceholderConfigurer द्वारा और सिस्टम prooperties भी

@Value("#{systemProperties['java.version']}") 
private String javaVersionMap; 

//Dont know how 
//@Value("#{systemProperties.javav.version}") 
//private String javaVersionDirect; 

@Value("${java.version}") 
private String javaVersionProp; 

//-DcmdParam=helloWorld 
@Value("#{systemProperties['cmdParam']}") 
private String cmdParamMap; 

@Value("#{systemProperties.cmdParam}") 
private String cmdParamDirect; 

@Value("${cmdParam}") 
private String cmdParamProp 

आप उपयोग कर सकते हैं, उदाहरण के लिए प्रदान की फ़ाइलें उनमें से सभी @Value एनोटेशन या config.xml फ़ाइलों (<property name="databaseName" value="#{systemProperties.databaseName}"/>)

01 में
+0

क्या किसी को इस दो अलग-अलग प्रकार की सिस्टम गुणों के लिए सही नाम पता हैं (सिस्टम प्रदान किया गया है और कमांड लाइन एक प्रदान करता है)? – Ralph

+0

ऐसी कोई चीज़ मौजूद नहीं है। कमांड लाइन संस्करण "असली" सिस्टम गुण सेट करता है: http://download.oracle.com/javase/6/docs/technotes/tools/windows/java.html#standard। इस तरह का अंतर केवल मेवेन में मौजूद है: सिस्टम प्रॉपर्टीज (कमांड लाइन) बनाम प्रोजेक्ट प्रॉपर्टीज (pom.xml) –

+0

@ सेन पैट्रिक फ़्लॉइड: मैंने इसका परीक्षण किया है और आप सही हैं (यह लगता है कि मेरे रिकॉर्ड गलत थे)। - मैंने जवाब सही कर दिया है – Ralph

4

इस तरह की चीज करने का एक तरीका एक PropertyPlaceholderConfigurer का उपयोग करना है जिसे सिस्टम गुणों का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है।

मैंने यह भी देखा कि Spring 3.1 M1 blog entry "पर्यावरण" से कॉन्फ़िगरेशन जानकारी तक पहुंचने के लिए नई सामग्री के बारे में बात करता है। बेशक, यह केवल एक मील का पत्थर है ... उत्पादन तैयार नहीं है।

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