Puede enlazar inmueble con Names.bindProperties(binder(), getProperties())
, donde getProperties
devuelve un objeto o una Properties
Map<String, String>
(leer el archivo de propiedades como un objeto Properties
depende de usted).
Puede inyectarlos por su nombre usando @Named
. Si usted tenía un archivo de propiedades:
foo=bar
baz=true
Usted podría inyectar los valores de estas propiedades en cualquier lugar que quería, así:
@Inject
public SomeClass(@Named("foo") String foo, @Named("baz") boolean baz) {...}
está inyectando
Guice puede convertir los valores de las cadenas al tipo, tales como el boolean
anterior, automáticamente (suponiendo que la cadena es un formato apropiado). Esto funciona para tipos primitivos, enumeraciones y literales de clase.
NB, utilizando guice 3.0-rc2 (última versión actual), esto solo funciona si importa @Named de los paquetes guice. *, No javax.inject.Named. –
@ mjg123: Eso no debería ser cierto ... Implementé la función que hace que Guice '@ Named' y' @ javax.inject.Named' sean intercambiables. Consulte la prueba [aquí] (http://code.google.com/p/google-guice/source/browse/trunk/core/test/com/google/inject/name/NamedEquivalanceTest.java), que incluye una prueba que esto funciona con 'Names.bindProperties'. ¿Lo has probado? – ColinD
Sí, lo probé. Estaba mirando esta página porque tenía la misma pregunta que el OP. Encontré eso específicamente para el caso de la inyección 'boolean', que * importó * que usé, aunque admito que estoy lejos de ser un experto en Guice. –