Хороший пример конфигурации Spring с использованием java.util.prefs или Commons Configuration

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

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="classpath:application.properties"/>
</bean>

Основная проблема в этом заключается, конечно, в том, что файл свойств представляет собой артефакт, который должен быть зарегистрирован, и для запуска нового экземпляра потребуется обновить этот артефакт. Для упрощенного развертывания я бы хотел, чтобы сам ApplicationContext самозагрузился на основе таблиц базы данных. Я видел решения, подобные этому сообщению на форуме, кто-нибудь здесь знает о лучших инструментах или это дефактный подход к этой проблеме? Я также хотел бы иметь возможность обновлять / перезагружать настройки во время выполнения, используя JMX или другие средства, но необходимость перезапускать приложение после изменений в базе данных все равно будет лучшим решением для текущей.

1 ответ

Решение

То, как мы это сделали, заключалось в том, чтобы поместить некоторую информацию о конфигурации в среду и затем извлечь соответствующую информацию оттуда.

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
   <property name="searchSystemEnvironment" value="true" />
</bean>

Если конфигурация изменится, то приложение необходимо будет перезапустить. Можно также поместить все различные конфигурации в среду и вложить переменные, как показано ниже:

<bean id="db" class="org.DataSource"
        p:databaseServer="${${MODE}_DBSERVER}"
        p:databaseName="${${MODE}_DBNAME}" />

где $MODE = dev, qa и т. д.

Другие вопросы по тегам