2010-06-18 62 views
42

有沒有人有過如何使用Google Guice從.properties文件注入屬性的例子。有人告訴我,當噴油器啓動時,Guice能夠驗證所有需要的屬性。Guice和屬性文件

此時我無法在guice wiki上找到關於此的任何內容。

回答

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) {...} 

吉斯可以從字符串類型的值轉換注入,如上面的boolean自動(假設字符串是一個適當的格式)。這適用於原始類型,枚舉和類文字。

+0

注意,使用guice 3.0-rc2(當前最新版本),這隻適用於從guice。*包導入@Named,而不是javax.inject.Named。 – 2011-02-19 14:52:06

+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),其中包含測試這與'Names.bindProperties'一起工作。你試過了嗎? – ColinD 2011-02-19 15:05:16

+1

是的,我確實嘗試過 - 我在看這個頁面,因爲我和OP有同樣的問題。我發現,特別是針對'boolean'注入的情況,它*確實*重要,但我承認我遠離Guice的專家。 – 2011-03-02 20:02:22