Можно ли заменить определение bean-компонента Spring во время выполнения?

Рассмотрим следующий сценарий. У меня есть контекст приложения Spring с bean-компонентом, свойства которого должны быть настраиваемыми, например DataSource или MailSender . Изменяемая конфигурация приложения управляется отдельным компонентом, назовем его конфигурацией .

Теперь администратор может изменить значения конфигурации, такие как адрес электронной почты или URL-адрес базы данных, и я хотел бы повторно инициализировать настроенный компонент во время выполнения.

Предположим, я не могу просто изменить свойство настраиваемого объекта. 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>

Итак, есть компонент constructorInjectedBean , который использует внедрение конструктора. УДАЛИТЬ ИЗ таблицы WHERE id IN (SELECT ....) Как я могу это сделать?

Я хочу сделать что-то вроде этого:

DELETE FROM table WHERE id IN (SELECT ....)

Как я могу это сделать?

38
задан Brian Tompsett - 汤莱恩 11 July 2015 в 14:33
поделиться