Я використовую анотації для налаштування мого весняного середовища так:
@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
... Це те, що я хотів би зробити. Будь-які пропозиції?