Сохранить свойства в базе данных, но переопределить локально

В настоящее время мы храним свойства среды нашего приложения в файле .properties в WEB-INF. Мы хотим переместить их в таблицу базы данных. Но мы по-прежнему хотим указать имя jndi, и при локальном запуске в нашей тестовой среде мы хотим иметь возможность переопределять определенные свойства только для нашей рабочей области для тестирования и разработки.

База данных Apache commons DatabaseConfigurator казалась хорошей, но не работала бы хорошо, если бы имя jndi было определено как свойство в файле. Ничего из того, что я сделал, чтобы попросить его сначала посмотреть файл свойств, не сработало.

Я решил создать подкласс AbstractConfiguration от apache commons, чтобы попытаться создать единый конфигуратор, который проверял бы файл и базу данных так, как я хотел, но опять же, это не сработало. Spring хочет, чтобы это имя jndi было абсолютно первым, вероятно, потому, что источник данных должен быть передан в конфигуратор в качестве параметра.

Как я могу получить то, что мне нужно здесь? В основном свойства в базе данных, но те, что в файле, переопределяют их. И имя jndi для источника данных не должно быть жестко закодировано в конфигурации spring.


person Entropy    schedule 07.03.2016    source источник


Ответы (1)


Почему бы вам не написать прослушиватель ApplicationContext, который будет считывать конфигурацию из вашей БД и внедрять ее в JNDI? Затем вы можете переопределить конфигурацию в JNDI с помощью файла context.xml, который будет помещен в папку src/local/webapp/META-INF/.

Вот как мы заставляем это работать в нашем веб-приложении.

person pmartin8    schedule 07.03.2016