Несколько наборов конфигурации для применения в рамках 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
,