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