2010-06-18 12 views
42

किसी को भी कैसे एक .properties फ़ाइल से गुण इंजेक्षन करने के लिए गूगल Guice का उपयोग करने का एक उदाहरण है। मुझे बताया गया कि गिइस यह सत्यापित करने में सक्षम था कि इंजेक्टर शुरू होने पर सभी आवश्यक गुण मौजूद हैं।Guice और गुण फ़ाइलों

इस समय मैं इस बारे में guice विकि पर कुछ भी नहीं मिल सकता है पर

उत्तर

67

आप 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 और वर्ग अक्षर के लिए काम करता है।

+0

एनबी, guice 3.0-rc2 (वर्तमान नवीनतम संस्करण) का उपयोग करके, यह केवल तभी काम करता है जब आप guice से नामित आयात करते हैं। * पैकेज, javax.inject.Named नहीं। –

+0

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

+1

हाँ मैंने कोशिश की - मैं इस पृष्ठ को देख रहा था क्योंकि मेरे पास ओपी के समान प्रश्न था। मुझे लगता है कि विशेष रूप से पाया 'boolean' इंजेक्शन के मामले के लिए, यह * * किया बात जो मैं प्रयोग किया जाता है, हालांकि मैं मानता हूं मैं Guice में एक विशेषज्ञ से दूर हूँ। –

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