2012-10-23 26 views
6

ऐसा लगता है कि जीडब्ल्यूटी के पास अपनी स्वयं की बेक्ड-इन डी तंत्र (GWT.create(Class<?>)) है। इसके ऊपर जीआईएन प्रस्ताव क्या लाभ देता है? क्या आप कभी भी एक दूसरे के साथ संयोजन के रूप में उपयोग करना चाहिए, या वे पारस्परिक रूप से अनन्य हैं? मुझे गुइस पसंद है इसलिए मैं जीआईएन का उपयोग करने के लिए लुभाना चाहता हूं, लेकिन अगर यह पहले से ही बॉक्स के बाहर एक ही सामान नहीं करता है तो इसे पेश नहीं करना चाहते हैं।जीडब्ल्यूटी.क्रेट (कक्षा <?>) बनाम जीआईएन?

उत्तर

8

जिन और GWT.create में कुछ मतभेद हैं - जिन, @Inject टिप्पणी द्वारा निर्भरता प्रदान करने के बारे में अधिक है या तो खेतों, setters, या निर्माता पर है, जबकि GWT.create एक कार्यान्वयन प्राप्त करने के बारे में विशेष रूप है। जिन आपके द्वारा प्रदान किए जाने वाले किसी भी कन्स्ट्रक्टर का उपयोग करेगा, लेकिन आपको विशेष रूप से प्रतिस्थापन प्रकार प्रदान करना होगा, जबकि GWT.create केवल एक डिफ़ॉल्ट कन्स्ट्रक्टर के साथ काम करेगा, और आपके 'रिबिंड नियम' को सटीक होने की आवश्यकता नहीं है, और यहां तक ​​कि नए वर्ग भी हो सकते हैं संकलन समय पर बनाया जाना चाहिए। यह यह देखने में भी सक्षम है कि उपयोगकर्ता कौन सा वातावरण चला रहा है और उसके आधार पर नियमों का एक विशिष्ट सेट चुनें, जो कि जीन करने में सक्षम नहीं है।

जीन वास्तव में इन अन्य सुविधाओं को प्राप्त करने के लिए GWT.create का उपयोग करता है - यदि आपके पास नियम परिभाषित नहीं है, तो जीन स्वचालित रूप से GWT.create पर कॉल करेगा। इसका मतलब यह है कि अगर आप की तरह

@Inject MyRemoteServiceAsync rpcService; 

जिन एक नियम GWT.create फोन करेगा कि RPC कॉल का निर्माण करने के लिए है। यह यूआईबिंदर, संपादक ड्राइवर्स, आई 18 एन संदेश और कॉन्स्टेंट आदि के लिए भी काम करता है।

यदि आप पहले से ही समझते हैं और गुइस की तरह हैं, तो जिनके लिए आपके लिए एक बड़ा कदम नहीं होना चाहिए, और आपके पास अभी भी सीधे आवेदक करने की क्षमता होगी GWT.create, या निस्संदेह जीन से ऐसा करने के लिए कहें। वास्तव में, जीन का उपयोग करने के लिए, आपको गेंद रोलिंग प्राप्त करने के लिए GWT.create(MyGinjector.class) पर कॉल करने की आवश्यकता है।

8

GWT.create() पर निर्भरता इंजेक्शन के साथ कुछ लेना देना नहीं है। यह फैक्टरी विधि है।

GWT.create(SomeThing.class) और new SomeThing() के बीच फर्क सिर्फ इतना है कि सटीक SomeThing वर्ग की जगह या deferred binding तथाकथित का उपयोग कर उत्पन्न किया जा सकता है। लेकिन उदाहरण के लिए GWT.create() डी ऑब्जेक्ट पर निर्भरता प्रदान करने के बारे में GWT.create() में कुछ भी नहीं है।