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

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

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

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


person Greymeister    schedule 10.03.2011    source источник
comment
+1: я тоже пытаюсь сделать что-то подобное в своем приложении. Хотя у меня есть решение для этого, оно огромное, сложное и очень неэлегантное, поэтому я очень заинтересован в том, чтобы посмотреть, есть ли лучший способ.   -  person Donal Fellows    schedule 11.03.2011
comment
Я нашел это сообщение @sean-patrick-floyd с использованием этого в конфигурации по-прежнему оставляло меня с проблемой куриного яйца при загрузке свойств базы данных из файла и других свойств из базы данных в том же ApplicationContext.   -  person Greymeister    schedule 11.03.2011


Ответы (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 и т. д.

person Victor Parmar    schedule 16.03.2011