मैं निर्भरता इंजेक्शन के लिए Google Guice के साथ टिंकर हो गया और इसे अपने मौजूदा एप्लिकेशन में एकीकृत करना शुरू कर दिया। अब तक सब ठीक है. मेरे पास कई निर्भरताएं हैं जो उनकी निर्भरताओं, स्ट्रिंग्स, डेटा स्रोत, एट कैटेरा के बगल में हैं। मुझे पता है कि नामांकित बाइंडिंग हैं, लेकिन मैं वास्तव में प्रत्येक वर्ग के लिए कन्स्ट्रक्टर को पास करने के लिए हर साधारण स्ट्रिंग के लिए एनोटेशन नहीं बनाना चाहता हूं। फिर, मेरे लिए फैक्ट्री कार्यान्वयन बनाने, सहायक इंजेक्शन नामक एक चीज है। वाह, लेकिन मुझे अभी भी कारखाने के इंटरफेस को परिभाषित करना है। वर्ग है जो निर्भरता है, लेकिन इस उदाहरण वर्ग के बारे में क्या ठीक thats:गुइस के साथ निर्भरता इंजेक्शन: कुछ ऐसा जो किसी भी ट्यूटोरियल द्वारा कवर नहीं किया गया है
public class FooBarClass {
public FooBarClass(String name, String anotherOne) {
// Some stuff
}
}
मामलों में जहां मैं में संदेह Guice या अधिक सामान्य रूप डि सही तरीके से उपयोग करने के लिए कैसे कर रहा हूँ रहे हैं। "अक्सर मैं सुनता हूं: एक्सवाईजेड फ्रेमवर्क नया नया है।" लेकिन यह निहित है कि मुझे DI12 फ्रेमवर्क के साथ प्रत्येक उदाहरण बनाना है।
केवल एक आवृत्ति
आवश्यक है क्या होगा अगर मैं इस वर्ग के केवल एक उदाहरण की ज़रूरत है? इस वर्ग में दो स्ट्रिंग्स के बगल में कोई निर्भरता नहीं है। एक शटडाउन हुक के बारे में सोचें जिसे केवल एक बार लगाया जाएगा और मेरे शटडाउन हुक के रूप में जेवीएम को पास कर दिया जाएगा। क्या मुझे यह उदाहरण गुइस के साथ बनाना चाहिए? यह मेरे लिए बहुत गूंगा दिखता है, क्योंकि इंजेक्ट करने के लिए कुछ भी नहीं है, लेकिन मुझे गाइड दोनों पैरामीटर पास करने के लिए एक फैक्टरी इंटरफ़ेस लिखना है और मुझे DIU का उपयोग करने के लिए मेरे FooBarClass के लिए एक इंटरफ़ेस बनाना है।
कई उदाहरणों के लिए आवश्यक हैं
एक ही बात एक मामले में जहां मैं इस वर्ग के कई उदाहरण की जरूरत है पर लागू होता है। कोई निर्भरता नहीं है, लेकिन मुझे इससे कुछ भी प्राप्त करने के लिए बॉयलरप्लेट कोड का एक गुच्छा बनाना है। यह मेरे लिए गलत लगता है।
तो, मुझे DI और/या Guice का उपयोग कैसे करना चाहिए?
बहुत बहुत धन्यवाद!