2010-02-23 10 views
6

वसंत में xml conf में संबंधित बीन को परिभाषित करके किसी भी वर्ग को तुरंत चालू करना संभव था। विभिन्न मानकों के साथ एक ही कक्षा के लिए एक और बीन को तुरंत चालू करना भी संभव था .....एक वर्ग के लिए एक सीडीआई/वेल्ड बीन को तुरंत कैसे चालू करें?

सीडीआई में भी ऐसी विशेषताएं हैं, अर्थात् विभिन्न प्रारंभिकरण के साथ उसी वर्ग के विभिन्न उदाहरण बनाना संभव है मापदंडों?

क्या कक्षा को बदलने के बिना एक बीन बनाना भी संभव है .... मेरा मतलब एनोटेशन जोड़ने के बिना है?

मुझे उदाहरण दें।

<bean id="someBean1" class="org.mm.MyBean"> 
    <property name="x" value="xx"/> 
    <property name="y" value="yy"/> 
    <property name="z" value="zz"/>  
</bean> 
<bean id="someBean2" class="org.mm.MyBean"> 
    <property name="x" value="other value"/> 
    <property name="y" value="yy2"/> 
    <property name="z" value="zz2"/>  
</bean> 

उसी वर्ग के दो उदाहरणों को तुरंत कैसे शुरू कर सकते हैं और उन्हें विभिन्न फ़ील्ड मानों के साथ प्रारंभ कर सकते हैं?

उत्तर

4

दो विकल्प के रूप में जहाँ तक मैं देख सकते हैं:

  • अपने USECASE के आगे ज्ञान के बिना, मुझे लगता है कि आप या तो (नकली) परीक्षण या विन्यास मुद्दों के लिए कुछ वैकल्पिक कार्यान्वयन प्रदान करना चाहते हैं (जैसे कि एक और ऑर्डर सेवा के लिए भुगतान प्रदाता)। यह कल्पना ही के द्वारा समर्थित है, @Alternativehere पर एक नजर है (और मेरी प्रारंभिक गलती दोहराने नहीं है और beans.xml में विकल्प को सक्रिय करने के भूल जाते हैं)

  • एक स्प्रिंग शैली एक्सएमएल-विन्यास के लिए, आप कर सकते हैं Seam 3 Config का उपयोग करें, जो वर्णित अनुसार एक्सएमएल-कॉन्फ़िगरेशन प्रदान करता है। बीटीडब्लू, यह जेएसआर 2 9 9 का हिस्सा रहा है, लेकिन किसी भी कारण से इसे spec से हटा दिया गया है।

+0

ने 2011 में उत्तर दिया। ईई 7 के साथ वर्तमान स्थिति क्या है? – banterCZ

+0

मुझे कोई जानकारी नहीं है। शायद एक नया सवाल शुरू करें? –

+0

यहां प्रश्न है http://stackoverflow.com/questions/25153624/how-to-instantiate-more-cdi-beans-for-one-class – banterCZ

2

ऐसा करने के कुछ तरीके हैं।

उदा। @New

निजी @ इंजेक्शन @ न्यू योरबीन वाईबी का उपयोग करें; निजी @ इंजेक्ट @ न्यू योरबीन वाईबी 2;

यह कंटेनर को एक नया उदाहरण बनाने के लिए मजबूर करता है, भले ही बीन मूल रूप से क्या था।

एक और तरीका है कि आपकी बीन को बस डिस्प्लेन्ट स्कोप्ड के रूप में परिभाषित करना होगा (जो बीटीडब्ल्यू (वर्तमान में) डिफ़ॉल्ट है यदि कक्षा को बिल्कुल एनोटेट नहीं किया गया है)।

+0

और गुणों के बारे में क्या ?? क्या उन्हें इंजेक्शन दिया जा रहा है? – smikesh

2

आप आसानी से निर्माता तरीकों का उपयोग कर सकते हैं और यदि आप एक से अधिक इंस्टेंस कि एक विधि द्वारा उत्पादित किया जाना चाहिए है CDI क्वालिफायर का उपयोग उदाहरणों के विभिन्न प्रकार के भेद करने के लिए।

इसके अलावा आप इसे स्प्रिंग तरीके से करने के लिए सीम कॉन्फ़िगर का उपयोग कर सकते हैं लेकिन मुझे लगता है कि निर्माता विधियां इसे करने का अधिक शानदार तरीका हैं। आपके उपयोग के मामले के आधार पर एक और विकल्प है जो @ वैकल्पिक है।

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

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