2013-04-04 9 views
41

मेरे पास दो स्प्रिंग प्रोफाइल हैं: "dev" और "test"। मैं सर्वर वातावरण में सक्रिय प्रोफ़ाइल सेट करना चाहता हूं, मैं इसे अपने कोड में सेट नहीं करना चाहता हूं ताकि जहां भी मैं अपना एप्लिकेशन तैनात करूँ, प्रोफ़ाइल सर्वर पर प्रोफ़ाइल के आधार पर लोड हो जाती है। मैं उसे कैसे कर सकता हूँ?स्प्रिंग प्रोफाइल चर सेट करना

उत्तर

70

आप बस के रूप में इस सर्वर पर एक प्रणाली गुण सेट कर सकते हैं ...

-Dspring.profiles.active=test 

संपादित करें: ग्रहण में बिल्ला में जोड़ना, Run -> Run Configurations चयन करें और अपने बिलाव चलाने विन्यास चुनें। टैब पर क्लिक करें और VM arguments के अंत में जोड़ें -Dspring.profiles.active = परीक्षण पर क्लिक करें। एक और तरीका है अपने Servers परियोजना में अपने catalina.properties प्रॉपर्टी जोड़ना होगा, लेकिन अगर आप इसे जोड़ने वहाँ छोड़ डी

संपादित करें: स्प्रिंग बूट के साथ प्रयोग के लिए, आप एक अतिरिक्त विकल्प नहीं है। यदि आप दो डैश के साथ संपत्ति को प्रीपेड करते हैं तो आप संपत्ति को तर्क तर्क के रूप में पास कर सकते हैं।

यहाँ एक स्प्रिंग बूट निष्पादन योग्य जार फ़ाइल का उपयोग कर दो उदाहरण ...

सिस्टम संपत्ति

[[email protected] ~]$ java -jar -Dspring.profiles.active=test myproject.jar 

कार्यक्रम तर्क

[[email protected] ~]$ java -jar myproject.jar --spring.profiles.active=test 
+1

मैं वसंत प्रोफाइल के लिए नया हूं। "सर्वर पर"। मुझे इसे कहां और कैसे सेट करना है। –

+0

एक और बात यह है कि, मैं ग्रहण के माध्यम से टॉमकैट शुरू कर रहा हूं और कमांड लाइन के माध्यम से नहीं। –

+3

आप किस सर्वर का उपयोग कर रहे हैं? यदि आप टोमकैट का उपयोग कर रहे हैं, तो आप इसे $ CATALINA_HOME/conf/catalina.properties में जोड़ सकते हैं लेकिन डीडी को छोड़ दें ताकि आप बस spring.profiles.active = test – hyness

17

रहे हैं कम से कम दो तरीके हैं ऐसा करने के लिए:

  1. web.xml में संदर्भ पैराम को परिभाषित करना - जो "सभी वातावरणों के लिए एक पैकेज" खंड को तोड़ देता है। मैं सलाह नहीं देते

  2. प्रणाली संपत्ति -Dspring.profiles.active=your-active-profile

को परिभाषित मुझे विश्वास है कि प्रणाली संपत्ति को परिभाषित एक बेहतर तरीका है। तो टोमकैट के लिए सिस्टम प्रॉपर्टी को कैसे परिभाषित किया जाए? इंटरनेट पर मुझे बहुत सी सलाह मिल सकती है जैसे "catalina.sh संशोधित करें" क्योंकि आपको ऐसी चीजें करने के लिए कोई कॉन्फ़िगरेशन फ़ाइल नहीं मिलेगी। Catalina.sh संशोधित एक गंदे unmaintainable समाधान है। ऐसा करने का एक बेहतर तरीका है।

बस सामग्री के साथ बिलाव के बिन निर्देशिका में फ़ाइल setenv.sh बनाएँ:

JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=dev" 

और यह catalina.sh शुरू करने या चलाने चल दौरान स्वचालित रूप से लोड किया जाएगा।

Here is a blog उपर्युक्त समाधान का वर्णन करता है। टिप्पणी अनुभाग दिलचस्प है क्योंकि यह अधिक जानकारी के बारे में बात करता है।

+4

विंडोज़ उपयोग के लिए सेट JAVA_OPTS =% JAVA_OPTS% -Dspring.profiles.active = dev (कोई उद्धरण नहीं) – ThomasRS

+1

मुझे लगता है कि CATALINA_OPTS का उपयोग करना बेहतर है: http://stackoverflow.com/questions/7738794/add-jvm- विकल्प -इन-टोमकैट –

+0

ऊपर लिंक मर चुका है। – pramodc84

1

सिस्टम वातावरण चर के रूप में:

विंडोज: प्रारंभ -> प्रकार "पर्यावरण" वातावरण चर का चयन करें और जोड़ने के लिए एक नया: Name: spring_profiles_active Value: dev (या जो भी तुम्हारा है)

लिनक्स: पाथ के तहत/etc/पर्यावरण के लिए निम्न पंक्ति जोड़ें:

spring_profiles_active=prod (या जो भी प्रोफ़ाइल है)

फिर export spring_profiles_active=prod तो आपके पास अब रनटाइम में है।

+0

यह ओएसजीआई कंटेनर में आपके एप्लिकेशन को चलाने पर भी बहुत अच्छा काम करता है (विंडोज़ में परीक्षण किया जाता है)। बस इसे स्थापित करने के बाद जेवीए इंस्टेंस को पुनरारंभ करना याद रखें, और सुनिश्चित करें कि "spring.profiles.active" नामक सिस्टम प्रॉपर्टी अनसेट है। एफवाईआई, यह वास्तव में सिस्टम प्रॉपर्टी सेट नहीं करता है, लेकिन स्प्रिंग पर्यावरण इंस्टेंस प्रोफाइल। धन्यवाद! –

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