Я разработчик, работающий над веб-приложением Java, которое построено на основе Spring. Это приложение будет развернуто для нескольких разных клиентов. Существует класс, который содержит некоторую бизнес-логику, которая отличается для каждого клиента. С точки зрения Spring, достаточно просто подключить в соответствующем классе (как bean) для каждого клиента.Как настроить приложение для бизнес-логики Spring?
Однако разработчики не несут ответственности за развертывание приложения. Команда Operations отвечает за то, что они открывают файл WAR и изменяют конфигурацию Spring конфигурации для каждого развертывания клиента, вероятно, слишком много, чтобы спросить у них. Файлы свойств в порядке, но изменение внутренних файлов - возможно, нет.
Есть ли у кого-нибудь еще стратегия для решения этой проблемы?
Edit:
Чтобы дать пример того, что я говорю о:
public interface IEngine {
void makeNoise();
}
public class Car {
public void setEngine(IEngine engine) {
this.engine = engine;
}
}
бизнес-логики клиенту по:
HeavyDutyEngine implements IEngine {
public void makeNoise() {
System.out.println("VROOOM!");
}
}
бизнес-логика Customer Б:
LightWeightEngine implements IEngine {
public void makeNoise() {
System.out.println("putputput");
}
}
В XML-конфигурации Spring:
Для клиента А, может выглядеть следующим образом:
<bean id="hdEngine" class="HeavyDutyEngine" />
<bean id="lwEngine" class="LightWeightEngine" />
<bean id="car" class="Car">
<property name="engine" ref="hdDngine">
</bean>
Для клиента B, это может выглядеть следующим образом:
<bean id="hdEngine" class="HeavyDutyEngine" />
<bean id="lwEngine" class="LightWeightEngine" />
<bean id="car" class="Car">
<property name="engine" ref="lwEngine">
</bean>
Мы должны видеть, какие изменения в бизнес-логике между различными клиентами. –
В основном это просто замена определенных фасолей в зависимости от клиента. –