2015-02-14 6 views
5

में चूहे इंजेक्शन मुझे गुइस इंजेक्शन के बारे में संदेह है। क्या एक स्थिर वैरिएबल मान को स्थिर चर में इंजेक्ट करना संभव है?स्थिर चर

मैं

@Provides 
@Named("emp.id") 
public Integer getEmpId() { 
    return 2; 
} 

की कोशिश की और इस तरह के

@Inject 
@Named("emp.id") 
private static Integer id; 

लेकिन id वापसी मान अशक्त, जब मैं स्थिर संशोधक आईडी मान 1 दे दी हटाया के रूप में स्थिर चर को यह मूल्य इंजेक्षन की कोशिश की है।

वास्तव में यहां क्या हो रहा है?

उत्तर

8

गुइस डिज़ाइन द्वारा स्थिर फ़ील्ड इंजेक्ट नहीं करता है। आप request static injection लेकिन this should be done only as a crutch कर सकते हैं:

यह API सामान्य उपयोग के लिए सिफारिश की है नहीं, क्योंकि यह स्थिर कारखानों के रूप में ही कई समस्याओं का भुगतना पड़ता है: यह परीक्षण करने के लिए अनाड़ी है, यह निर्भरता अपारदर्शी है, और यह वैश्विक स्थिति पर निर्भर करता है।

आपके मामले में आप अपने स्थिर क्षेत्र Guice द्वारा इंजेक्शन के लिए अपने configure विधि को यह जोड़ सकते हैं:

requestStaticInjection(Foo.class); 

आप इस पूर्णांक नहीं जोड़ते हैं तो अशक्त के लिए शुरू हो जाएगा (डिफ़ॉल्ट रूप से)।

मुझे नहीं पता कि क्यों id स्थिर संशोधक को हटाए जाने के बाद 1 पर सेट किया गया था। ऐसा लगता है कि यदि आपका गुइस मॉड्यूल सही तरीके से सेटअप किया गया था तो इसे 2 पर सेट किया जाना चाहिए था।

+0

क्षमा करें यह मूल्य 2 वापस लौटें ... – Robin

0

मुझे नहीं लगता। इंजेक्शन ऑब्जेक्ट पर काम करता है, स्थिर प्रकार एक प्रकार पर।

संबंधित मुद्दे