2012-11-26 9 views
30

मेरे आवेदन में मैं कुछ बीन्स ऑटोवायरिंग के लिए योग्य बनाने के लिए कई profiles का उपयोग करता हूं। जो कुछ मैं याद कर रहा हूं वह एक बीन को स्वत: काम करने के लिए पात्र होने की संभावना है जब कोई निश्चित प्रोफ़ाइल सक्रिय नहीं होती है।कोई प्रोफ़ाइल सक्रिय नहीं होने पर बीन परिभाषा समेत

है कि मैं के बारे में सोचा था कि यह ऐसा करने का सबसे अच्छा तरीका है इस तरह है:

  1. चलो लगता है कि हम सभी संभव प्रोफाइल, जैसे की एक सूची है {ऐ बी सी डी}।
  2. विशेष निष्पादन के लिए सक्रिय प्रोफाइल {ए, सी} हैं।
  3. मैं क्या करता हूं मैं सभी संभावित प्रोफाइल के लिए कृत्रिम प्रोफाइल बनाता हूं जो सक्रिय नहीं हैं। उदाहरण के मामले में मैं {not_B, not_D} प्रोफ़ाइल बनाउंगा।
  4. बीन्स मैं सक्रिय प्रोफाइल पर आधारित सक्रिय होना चाहता हूं X मैं प्रोफ़ाइल not_X प्रोफ़ाइल के लिए सक्रिय हूं। मेरे मामले अगर मैं एक सेम जब प्रोफ़ाइल बी सक्रिय नहीं है autowiring के लिए पात्र होने के लिए करना चाहता था में, मैं उन्हें @Profile("not_B")

व्याख्या होगा यह समाधान हालांकि सभी संभव प्रोफाइल के बारे में एक प्रमुख ज्ञान की आवश्यकता है।

क्या आप किसी भी बेहतर समाधान के बारे में सोच सकते हैं?

उत्तर

32

आप एक (!) ऑपरेटर का उपयोग कर सकते हैं ... लेकिन आपको स्प्रिंग 3.2 एम 1 का उपयोग करना होगा। यहाँ http://www.springsource.org/node/3563

प्रतिबद्ध है::

देखें परिवर्तन यहाँ की घोषणा की https://github.com/SpringSource/spring-framework/commit/bcd44f3798ed06c0704d2a3564b8a9735e747e87

मुद्दा: https://jira.springsource.org/browse/SPR-8728

तो 3.2 वसंत के उन्नयन अपनी परियोजना के लिए संभव नहीं है, मैं का उपयोग नहीं की सिफारिश करेंगे @Profile दृष्टिकोण और यह सुनिश्चित करना कि आपकी वसंत विन्यास में बीन नहीं बनाया गया है।

+0

यह बहुत अच्छा होगा, लेकिन वसंत 3.2 अभी आरसी 1 में है, इसलिए यह मेरे लिए एक विकल्प नहीं है। – ShyJ

+0

पोस्ट में मेरा परिवर्तन देखें। मैं अनुशंसा करता हूं कि @Profile के साथ प्रारंभ न करें और इसे स्प्रिंग कॉन्फ़िगरेशन में संभाल लें। – aweigold

+0

@Shyj इसके बारे में भी सोचा (जैसे बहिष्करण के साथ क्लासपाथ स्कैनर को कॉन्फ़िगर करना), लेकिन यह प्रोफाइल के रूप में अच्छा प्रतीत नहीं होता है ... – ShyJ

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