Sie können Eigenschaften binden Names.bindProperties(binder(), getProperties())
verwenden, wo getProperties
gibt ein Properties
Objekt oder eine Map<String, String>
(Lesen Sie die Eigenschaftendatei als ein Properties
Objekt bis zu Ihnen).
Sie können sie dann mit Namen unter Verwendung @Named
injizieren. Wenn Sie eine Eigenschaften hatte Datei:
foo=bar
baz=true
Sie könnten die Werte dieser Eigenschaften überall spritzen wollte man, wie folgt aus:
@Inject
public SomeClass(@Named("foo") String foo, @Named("baz") boolean baz) {...}
Guice Werte von den Saiten auf den Typ umwandeln kann eingespritzt, wie die boolean
oben, automatisch (vorausgesetzt, die Zeichenfolge ist ein passendes Format). Dies funktioniert für primitive Typen, Enums und Klassenliterale.
NB, mit guice 3.0-rc2 (aktuelle neueste Version) funktioniert dies nur, wenn Sie @ Named aus den Paketen guice. * Importieren, nicht javax.inject.Named. –
@ mjg123: Das sollte nicht wahr sein ... Ich habe die Funktion implementiert, die Guice '@ Named' und' @ javax.inject.Named' selbst austauschbar macht. Sehen Sie den Test [hier] (http://code.google.com/p/google-guice/source/browse/trunk/core/test/com/google/inject/name/NamedEquivalanceTest.java), der einen Test enthält das funktioniert mit 'Names.bindProperties'. Hast du es versucht? – ColinD
Ja, ich habe es versucht - ich schaute auf diese Seite, weil ich die gleiche Frage hatte wie das OP. Ich fand, dass speziell für den Fall der "booleschen" Injektion, es * wichtig war, was ich verwendete, obwohl ich zugeben muss, dass ich weit von einem Experten in Guice entfernt bin. –