Guice की मेरी समझ है जो:Guice: क्षेत्र इंजेक्शन के प्रभाव
- निर्माता स्तर के इंजेक्शन (
@Inject public class Widget(Dep one, Dep two)
) तात्पर्य कि Guice हमेशा कि निर्माता हर बार यह एकInjector
के माध्यम से शुरू हो जाती है इंजेक्षन जाएगा; और - विधि स्तरीय इंजेक्शन (
@Inject public void setDepOne(Dep one)
) कि Guice हमेशा उस विधि जब भी यह कहा जाता है इंजेक्षन जाएगा, जब तक किWidget
वस्तु GuiceInjector
का उपयोग कर बनाया गया था इन दोनों पूर्वानुमान सही हैं तात्पर्य? यदि नहीं, तो कृपया स्पष्ट करें!
तो मुझे जो लटका हुआ है वह है: फ़ील्ड-स्तरीय इंजेक्शन के प्रभाव क्या हैं?
@Inject private Dep one;
इसका मतलब यह है कि Guice हमेशा संपत्ति इंजेक्षन जाएगा जब वस्तु Guice इंजेक्टर के माध्यम से बनाया जाता है? उस मामले में मैं कल्पना करता हूं कि यह कन्स्ट्रक्टर-स्तर इंजेक्शन के साथ संघर्ष करता है।
उदाहरण के लिए, करता है निम्नलिखित कारण एक संघर्ष/त्रुटि:
public class Widget {
@Inject private Dep one;
private Dep two;
// Dep one already injected as a field!
@Inject public Widget(Dep one, Dep two) {
// ...
}
}
अग्रिम धन्यवाद!
गुइस हमेशा प्रत्येक निर्भरता का एक नया उदाहरण बनाएगा जो इसे इंजेक्ट करता है जब तक कि यह कुछ अन्य बाध्यकारी न हो, जैसे सिंगलटन। – logan
क्या आप समझा सकते हैं कि यह परीक्षण के लिए अच्छा क्यों नहीं है? – suitianshi
इस मामले में इंजेक्शन वाले फ़ील्ड निजी हैं, जो उन्हें प्रतिबिंब जैसे कुछ उपयोग किए बिना एक्सेस करना मुश्किल बनाता है। –