Рассмотрим следующий сценарий. У меня есть контекст приложения Spring с bean, свойства которого должны быть настраиваемыми, подумайте DataSource или MailSender. Конфигурирование изменчивого приложения управляется отдельным bean, назовите его configuration.
Теперь администратор может изменить значения конфигурации, такие как адрес электронной почты или URL-адрес базы данных, и я хотел бы повторно инициализировать настроенный bean во время выполнения.
Предположим, что я просто не могу просто изменить свойство сконфигурируемого bean выше (например, созданное с помощью FactoryBean или инсталляции конструктора), но нужно воссоздать сам bean.
Любые мысли о том, как достичь этого? Я был бы рад получить советы о том, как организовать всю конфигурацию. Ничего не исправлено.: -)
ИЗМЕНИТЬ
Чтобы немного прояснить ситуацию: я не спрашиваю, как обновлять конфигурацию или как вводить значения статической конфигурации. Я попробую пример:
<beans>
<util:map id="configuration">
<!-- initial configuration -->
</util:map>
<bean id="constructorInjectedBean" class="Foo">
<constructor-arg value="#{configuration['foobar']}" />
</bean>
<bean id="configurationService" class="ConfigurationService">
<property name="configuration" ref="configuration" />
</bean>
</beans>
Итак, существует bean constructorInjectedBean, который использует инъекцию конструктора. Представьте, что конструкция bean очень дорога, поэтому использование области прототипа или прокси-сервера factory не является вариантом, подумайте DataSource.
Я хочу, чтобы каждый раз, когда конфигурация обновляется (через configurationService, bean constructorInjectedBean воссоздается и повторно вводится в контекст приложения и зависит от beans.
Мы можем с уверенностью предположить, что constructorInjectedBean использует интерфейс, поэтому магия прокси-сервера действительно является опцией.
Я надеюсь, что вопрос стал немного понятнее.