Я использую аннотации для настройки среды Spring следующим образом:
@Configuration
...
@PropertySource("classpath:/config/default.properties")
...
public class GeneralApplicationConfiguration implements WebApplicationInitializer
{
@Autowired
Environment env;
}
Это приводит к тому, что мои свойства из default.properties
являются частью Environment
. Я хочу использовать механизм @PropertySource
здесь, потому что он уже предоставляет возможность перегрузки свойств через несколько резервных слоев и различных динамических местоположений, основываясь на настройках среды (например, местоположение config_dir). Я просто снял запасной вариант, чтобы сделать пример проще.
Однако теперь моя проблема заключается в том, что я хочу настроить, например, мои свойства источника данных в default.properties
. Вы можете передать настройки источнику данных, не зная подробно, какие настройки ожидает источник данных при использовании
Properties p = ...
datasource.setProperties(p);
Однако проблема в том, что объект Environment
является ни объектом Properties
ни Map
ни чем-либо сопоставимым. С моей точки зрения, просто невозможно получить доступ ко всем значениям среды, потому что здесь нет keySet
iterator
или чего-либо подобного.
Properties p <=== Environment env?
Я что-то пропустил? Возможно ли как-то получить доступ ко всем записям объекта Environment
? Если да, я мог бы сопоставить записи с объектом Map
или Properties
, я мог бы даже отфильтровать или сопоставить их по префиксу - создать подмножества в качестве стандартной Java- Map
... Это то, что я хотел бы сделать. Какие-либо предложения?