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.propertiesformen parte del Environment. Quiero usar el @PropertySourcemecanismo 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 Environmentobjeto no es ni un Propertiesobjeto Mapni nada comparable. Desde mi punto de vista, es simplemente no es posible acceder a todos los valores del medio ambiente, ya que no hay keySeto iteratormétodo o algo comparable.
Properties p <=== Environment env?
¿Me estoy perdiendo de algo? ¿Es posible acceder a todas las entradas del Environmentobjeto de alguna manera? Si es así, podría asignar las entradas a un objeto Mapu 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?