У меня довольно сложное приложение Spring Boot (включая Spring MVC и Security), которое, помимо прочего, требует настройки базы данных (url, username и password). Требование, чтобы позволить конечному пользователю настроить БД с помощью самого приложения, как следующее:Реконфигурация на лету DB в приложении Spring Boot
- Пользователь запускает приложение, которое не имеет конфигурацию DB пока
- Применение замечает отсутствие конфигурации DB и представляет пользователь с экраном конфигурации
- пользователь вводит URL и учетные данные
- Application начинает использовать этот DB
Очевидная проблема в том, что я не могу создать любой BEA ns, для которых требуется DataSource
, для которого требуется конфигурация БД до тех пор, пока эта конфигурация не будет известна.
Есть ли способ отложить инициализацию большинства компонентов приложения до тех пор, пока не будет выполнен первый этап настройки?
- Обновление - Некоторые из компонентов приложения инициализируют свое состояние из БД в своих методах @PostConsutrct
. Поэтому мне нужно либо задержать их создание, либо использовать способ обновления (потенциально) всех компонентов в контексте приложения после предоставления конфигурации.
Это кажется очень интересным ... вы видели [Spring-Bean Post Processors] (http://www.tutorialspoint.com/spring/spring_bean_post_processors.htm) – KLajdPaja
Да, у меня есть. Но не могу понять, как их можно использовать здесь. – Nikem
Не уверен, что это сработает или нет, но вы можете реализовать свою собственную версию DataSource, которая в основном представляет собой реализацию Dummy при запуске. Затем после ввода правильных учетных данных базы данных попытайтесь и измените DataSource в ApplicationContext. – hooknc