Несколько наборов конфигурации для применения в рамках Spring

Play!Framework предоставляет очень хорошую функцию, которая позволяет вам настраивать различный набор конфигураций, поэтому я мог бы иметь что-то вроде

storage=fs
storage.fs.home.dir=...
storage.fs.home.url=...
...

%at.storage=s3
%at.storage.s3.key=...
%at.storage.s3.secret=...
...

%prod.storage=s3
%prod.storage.s3.key=...
%prod.storage.s3.secret=...
...

По умолчанию приложение использует хранилище fs (файловая система), если приложение начало использовать --%at (приемочный тест), он использует aws s3 в качестве реализации хранилища, и если приложение запущено с --%prod, производственный режим, он также использует хранилище S3, но может с другой конфигурацией S3. Эта функция позволяет очень просто управлять версиями файла конфигурации приложения, вам не нужно обновлять файл конфигурации при развертывании на работающем сервере или сервере приемочного тестирования.

Мне любопытно, кто-нибудь реализовал определенный механизм для приложения на основе Spring Framework.

2 ответа

Решение

Попробуйте вот так: создайте разные каталоги в корне пути к классам, содержащие конфигурацию разных сред. Сохраняйте одинаковые имена файлов:

.
|____pom.xml
|____src
| |____main
| | |____resources
| | | |____dev 
| | | | |____application.properties
| | | |____test 
| | | | |____application.properties
| | | |____prod 
| | | | |____application.properties

Затем при запуске приложения передайте переменную среды, в которой указано, какую среду использовать. Например:

-Denv=prod

настроить загрузку данного файла свойств в зависимости от переменной среды, используя util: properties, например:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:util="http://www.springframework.org/schema/util"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans     
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/util
        http://www.springframework.org/schema/util/spring-util.xsd">

    <util:properties id="application" location="classpath:${env}/application.properties"/>

    ... remaining config here

</beans>

Посмотрите на профили Spring.

В моих приложениях у меня обычно есть default.properties и что-то вроде dev.properties, которое переопределяет некоторые значения из default.properties. Я включаю это с ProfileResourceProvider,

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