Мы разрабатываем большое электронное решение J2ee. У этого есть много интеграций: CMS, ERP, Почтовый сервер и т. Д. Все эти системы делятся на тестовые и производственные среды.Как отличить тестовые и производственные свойства приложения?
Нам необходимо развернуть наше приложение на наших тестовых серверах с тестовой конфигурацией и при развертывании на наших производственных серверах использовать конфигурацию производства. Как заставить наше приложение выбрать правильные свойства?
То, что мы уже пробовали до сих пор это:
Все наши файлы свойств содержат свойства теста и производственные свойства
test.mvxapi.server = SERV100TS test.mvxapi.username = user test.mvxapi.password = password test.mvxapi.port = 6006 test.mvxapi.cono = 600 mvxapi.server = SERV10001 mvxapi.username = user mvxapi.password = password mvxapi.port = 6001 mvxapi.cono = 100
Util, что читает эти свойства имеет переключатель: isTest(), который префикс ключа с помощью «теста».
public String getProperty(String property) { return properties.getProperty(prefix + "" + property); }
Коммутатор установлен другим свойством, созданным нашим сервером сборки. Когда создается .EAR, скрипт для наших производственных серверов внедряет (input to build.xml) «isProduction = true» в system.properties.
<propertyfile file="${buildDir}/system.properties">
<entry key="isProduction" value="${systemType}"/>
</propertyfile>
Я не уверен, что это лучший способ сделать это. Если по какой-либо причине «isProduction = false» ошибочно передается в нашу производственную среду, весь ад свободен.
Я читал, что у людей есть свойства локально на сервере. Но мы действительно не хотим, чтобы файлы распространялись. У нас есть кластер производственных серверов. Удостовериться, что каждый сервер имеет правильный файл свойств, не кажется отказоустойчивым
Лоты изменили размер 2009 :) У Spring теперь есть способ сделать это в профилях: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html – Tommy