Estoy usando anotaciones para configurar mi entorno de primavera de esta manera:
@Configuration
...
@PropertySource("classpath:/config/default.properties")
...
public class GeneralApplicationConfiguration implements WebApplicationInitializer
{
@Autowired
Environment env;
}
Esto lleva a que mis propiedades default.properties
formen parte del Environment
. Quiero usar el @PropertySource
mecanismo aquí, porque ya brinda la posibilidad de sobrecargar propiedades a través de varias capas de respaldo y diferentes ubicaciones dinámicas, según la configuración del entorno (por ejemplo, config_dir location). Simplemente eliminé la alternativa para facilitar el ejemplo.
Sin embargo, mi problema ahora es que quiero configurar, por ejemplo, las propiedades de mi fuente de datos en default.properties
. Puede pasar la configuración a la fuente de datos sin saber en detalle qué configuración espera usar la fuente de datos
Properties p = ...
datasource.setProperties(p);
Sin embargo, el problema es que el Environment
objeto no es ni un Properties
objeto Map
ni nada comparable. Desde mi punto de vista, es simplemente no es posible acceder a todos los valores del medio ambiente, ya que no hay keySet
o iterator
método o algo comparable.
Properties p <=== Environment env?
¿Me estoy perdiendo de algo? ¿Es posible acceder a todas las entradas del Environment
objeto de alguna manera? Si es así, podría asignar las entradas a un objeto Map
u Properties
, incluso podría filtrarlas o asignarlas por prefijo: crear subconjuntos como un java estándar Map
... Esto es lo que me gustaría hacer. ¿Alguna sugerencia?