Применение настроек в приложении на основе Spring во время выполнения

У нас есть веб-приложение на основе Spring (Spring.NET) и мы используем VariablePlaceholderConfigurer для хранения некоторых настроек в отдельном файле свойств.
Эти свойства в основном представляют собой различные значения, влияющие на бизнес-логику, например электронные письма, тайм-ауты, пути и т. д.
Теперь нам нужно реализовать административный пользовательский интерфейс, чтобы пользователи могли изменять эти настройки более удобным способом.
Итак, мы переместим все эти настройки в базу данных.

Вопрос. Каков наилучший (стандартный, распространенный) подход к реализации настроек, как я описал в приложении на основе Spring? (Предполагая, что мы хотим, чтобы изменения вступали в силу немедленно, без перезапуска приложения.)

Хорошо, если мы сможем сохранить наш текущий подход при установке значений как просто свойств bean-компонентов.


person Igor Romanov    schedule 21.10.2011    source источник


Ответы (1)


VariablePlaceholderConfigurer равно ObjectFactoryPostProcessor, который вызывается только после чтения определений объектов. Таким образом, вы не можете просто ввести новый IVariableSource, на который вы ссылаетесь в своей конфигурации VariablePlaceholderConfigurer, потому что он вступит в силу только после перезагрузки контейнера.

Вам необходимо создать IObjectObjectPostProcessor для изменять свойства объектов, управляемых контейнером, во время выполнения.

person Marijn    schedule 25.10.2011