आप Names.bindProperties(binder(), getProperties())
, जहां getProperties
रिटर्न एक Properties
वस्तु या एक Map<String, String>
(पढ़ने गुण फ़ाइल के रूप में एक Properties
वस्तु आप पर निर्भर है) का उपयोग गुण बाध्य कर सकते हैं।
फिर आप @Named
का उपयोग कर उन्हें नाम से इंजेक्षन कर सकते हैं। यदि आप था एक गुण फ़ाइल:
foo=bar
baz=true
आप उन गुणों के मूल्यों कहीं भी इंजेक्षन सकता है आप चाहते थे, इस तरह:
@Inject
public SomeClass(@Named("foo") String foo, @Named("baz") boolean baz) {...}
Guice प्रकार के तार से मूल्यों में बदल सकते हैं इंजेक्शन जा रहा है, इस तरह के रूप ऊपर boolean
, स्वचालित रूप से (मानते हुए कि स्ट्रिंग एक उपयुक्त प्रारूप है)। यह आदिम प्रकार, enums और वर्ग अक्षर के लिए काम करता है।
एनबी, guice 3.0-rc2 (वर्तमान नवीनतम संस्करण) का उपयोग करके, यह केवल तभी काम करता है जब आप guice से नामित आयात करते हैं। * पैकेज, javax.inject.Named नहीं। –
mjg123 @: यह सच नहीं होना चाहिए ... मैं विशेषता यह है कि Guice अपने आप विनिमेय बनाता '@ Named' और' @ javax.inject.Named' कार्यान्वित किया। देखें परीक्षण [यहां] (http://code.google.com/p/google-guice/source/browse/trunk/core/test/com/google/inject/name/NamedEquivalanceTest.java) है, जो एक परीक्षण भी शामिल है यह 'नाम। बाइंडप्रॉपर्टीज' के साथ काम करता है। या तुमने कोशिश की? – ColinD
हाँ मैंने कोशिश की - मैं इस पृष्ठ को देख रहा था क्योंकि मेरे पास ओपी के समान प्रश्न था। मुझे लगता है कि विशेष रूप से पाया 'boolean' इंजेक्शन के मामले के लिए, यह * * किया बात जो मैं प्रयोग किया जाता है, हालांकि मैं मानता हूं मैं Guice में एक विशेषज्ञ से दूर हूँ। –