जावा घटक/वर्ग अन्य जावा कक्षाओं के जितना संभव हो उतना स्वतंत्र होना चाहिए। इससे इन वर्गों का पुन: उपयोग करने और उन्हें अन्य वर्गों (यूनिट परीक्षण) से स्वतंत्र रूप से परीक्षण करने की संभावना बढ़ जाती है। अन्य जावा घटकों से जावा घटकों को डीक्यूपल करने के लिए किसी निश्चित अन्य वर्ग की निर्भरता को इंजेक्शन दिया जाना चाहिए, बल्कि वर्ग स्वयं ही इस वस्तु को बनाता/पाता है।
कक्षा ए कक्षा बी के लिए निर्भरता है यदि कक्षा ए कक्षा बी को चर के रूप में उपयोग करता है।
यदि निर्भरता इंजेक्शन का उपयोग किया जाता है तो कक्षा बी को श्रेणी ए के निर्माता के माध्यम से कक्षा ए को दिया जाता है - इसे तब निर्माण इंजेक्शन कहा जाता है; या एक सेटर के माध्यम से - इसे फिर सेटर इंजेक्शन
निर्भरता इंजेक्शन की सामान्य अवधारणा को नियंत्रण में उलटा कहा जाता है। एक वर्ग को खुद को कॉन्फ़िगर नहीं करना चाहिए, लेकिन बाहर से कॉन्फ़िगर किया जाना चाहिए।
स्वतंत्र कक्षाओं/घटकों के आधार पर एक डिजाइन पुन: प्रयोज्यता और सॉफ़्टवेयर का परीक्षण करने की संभावना को बढ़ाता है। उदाहरण के लिए यदि कोई कक्षा ए डेटाबेस से डेटा प्राप्त करने के लिए दाओ (डेटा एक्सेस ऑब्जेक्ट) की अपेक्षा करता है तो आप आसानी से एक और टेस्ट ऑब्जेक्ट बना सकते हैं जो डेटाबेस कनेक्शन को मैक्स करता है और वास्तविक ऑब्जेक्ट कनेक्शन के बिना ए को परीक्षण करने के लिए इस ऑब्जेक्ट को इंजेक्ट करता है।
मानक जावा के साथ निर्भरता इंजेक्शन पर आधारित एक सॉफ्टवेयर डिज़ाइन संभव है।
वसंत केवल विन्यास प्रदान करने और बनाए गए वस्तुओं के संदर्भ को प्रबंधित करने का एक मानक तरीका प्रदान करके निर्भरता इंजेक्शन का उपयोग करने में कुछ सरलीकरण जोड़ता है।
अधिक जानकारी के लिए this
पढ़ Edit1:
स्प्रिंग उसके संदर्भ initializes जब यह सब सेम स्प्रिंग आवेदन context.xml फ़ाइल में उत्सुक परिभाषित पैदा करता है। अब मान लीजिए कि आपके बीन ए की बी की निर्भरता है तो बी का ओबज पहले से ही वसंत के साथ है क्योंकि इसे वसंत प्रारंभ के दौरान सफलतापूर्वक बनाया गया है। फिर वसंत कक्षा ए में सेटर विधि की खोज करेगा और वहां बी के ओब्जे को स्थापित करेगा।
EDIT2:
Please read 5.4.1 Setter Injection
स्रोत
2010-09-16 10:07:25
आप कोड को ओपन सोर्स के रूप में पढ़ सकते हैं। –
@ वैसे भी मैं इसे पढ़ रहा हूँ। मैं सिर्फ एक सिंहावलोकन चाहता हूँ। –
"मुझे जवाब कहीं और मिला है, जवाब बाइटकोड वाद्ययंत्र है।" - नहीं यह नहीं। 9 5% में वसंत प्रतिबिंब एपीआई का उपयोग करता है।बाइट कोड उपकरण का उपयोग केवल विशेष प्रकार के इंजेक्शन जैसे विधि लुकअप इंजेक्शन के लिए किया जाता है। –