मुझे लगता है कि मुझे समझ में आया कि सीडीआई कैसे काम करता है और इसमें गहराई से गोता लगाने के लिए, मैं इसे वास्तविक दुनिया के उदाहरण के साथ उपयोग करने का प्रयास करना चाहता हूं। मैं एक चीज से फंस गया हूं जहां मुझे समझने के लिए आपकी मदद की ज़रूरत है। मैं इस संबंध में आपकी मदद की सराहना करता हूं।सीडीआई @ उत्पादक विधि कस्टम पैरामीटर ले सकते हैं?
मेरे पास जावा रिफ्लेक्शन एपीआई और एक्सएमएल कॉन्फ़िगरेशन का उपयोग करके अपना स्वयं का वर्कफ़्लो फ्रेमवर्क विकसित किया गया है जहां विशिष्ट प्रकार के "स्रोत" और "eventName" के आधार पर मैं उपयुक्त मॉड्यूल क्लास लोड करता हूं और उस पर "प्रक्रिया" विधि का आह्वान करता हूं। सब कुछ हमारी परियोजना में ठीक काम कर रहा है।
मैं CDI सुविधा के साथ बड़े उत्साहित थे और यह कार्यप्रवाह ढांचे के साथ की कोशिश जहां मैं मॉड्यूल वर्ग इंजेक्षन योजना बना रहा हूँ के बजाय प्रतिबिंब आदि का उपयोग कर उन्हें लोड देना चाहता था ...
बस आपको जानकारी देने के लिए, मैं कोशिश करूँगा चीजों को सरल रखने के लिए।
"संदेश.जावा" एक प्रकार का स्थानांतरण ऑब्जेक्ट है जिसमें "स्रोत" और "eventName" होता है, ताकि हम मॉड्यूल को उचित रूप से लोड कर सकें।
public class Message{
private String source;
private String eventName;
}
मॉड्यूल विन्यास नीचे
<modules>
<module>
<source>A</source>
<eventName>validate</eventName>
<moduleClass>ValidatorModule</moduleClass>
</module>
<module>
<source>B</source>
<eventName>generate</eventName>
<moduleClass>GeneratorModule</moduleClass>
</module>
</modules>
ModuleLoader.java
public class ModuleLoader {
public void loadAndProcess(Message message){
String source=message.getSource();
String eventName=message.getEventName();
//Load Module based on above values.
}
}
प्रश्न के रूप में
अब कर रहे हैं, अगर मैं एक ही लागू करने के लिए के माध्यम से CDI मुझे एक मॉड्यूल सुई (चाहते हैं मॉड्यूललोडर क्लास में), मैं @Produce विधि के साथ फैक्टरी क्लास लिख सकता हूं, जो ऐसा कर सकता है। लेकिन मेरा सवाल है,
ए) ईवेंट नाम और स्रोत के आधार पर लुकअप करने के लिए @Produce विधि को संदेश ऑब्जेक्ट कैसे पास कर सकता है?
क्या आप मुझे सुझाव दे सकते हैं?
अग्रिम धन्यवाद।
कृपया ध्यान दें कि इंजेक्शनपॉइंट चाल केवल तभी काम करती है जब आप एक निर्भर स्कॉप्ड बीन उत्पन्न करते हैं। Normalscoped सेम (सत्र स्कोप्ड, अनुप्रयोग स्कोप्ड, RequestScoped, आदि) के लिए यह _not_ काम करेगा क्योंकि आपके पास एकाधिक इंजेक्शन पॉइंट हैं और केवल एक ही नहीं। – struberg